## Loading required package: knitr
source("PCAWG-functions.R")
## Loading required package: GenomeInfoDb
## Loading required package: BiocGenerics
## Loading required package: parallel
##
## Attaching package: 'BiocGenerics'
## The following objects are masked from 'package:parallel':
##
## clusterApply, clusterApplyLB, clusterCall, clusterEvalQ, clusterExport, clusterMap, parApply,
## parCapply, parLapply, parLapplyLB, parRapply, parSapply, parSapplyLB
## The following objects are masked from 'package:stats':
##
## IQR, mad, xtabs
## The following objects are masked from 'package:base':
##
## anyDuplicated, append, as.data.frame, cbind, colnames, do.call, duplicated, eval, evalq, Filter, Find,
## get, grep, grepl, intersect, is.unsorted, lapply, lengths, Map, mapply, match, mget, order, paste,
## pmax, pmax.int, pmin, pmin.int, Position, rank, rbind, Reduce, rownames, sapply, setdiff, sort, table,
## tapply, union, unique, unsplit, which, which.max, which.min
## Loading required package: S4Vectors
## Loading required package: stats4
##
## Attaching package: 'S4Vectors'
## The following objects are masked from 'package:base':
##
## colMeans, colSums, expand.grid, rowMeans, rowSums
## Loading required package: IRanges
## Loading required package: GenomicRanges
## Loading required package: Biostrings
## Loading required package: XVector
## Loading required package: SummarizedExperiment
## Loading required package: Biobase
## Welcome to Bioconductor
##
## Vignettes contain introductory material; view with 'browseVignettes()'. To cite Bioconductor, see
## 'citation("Biobase")', and for packages 'citation("pkgname")'.
##
## Attaching package: 'VariantAnnotation'
## The following object is masked from 'package:base':
##
## tabulate
## Warning: NAs introduced by coercion
## Loading required package: VGAM
## Loading required package: splines
## Warning: NAs introduced by coercion
p <- "../final/annotated_014/snv_mnv"
d <- dir(p, pattern="*.vcf.RData", full.names=TRUE)
finalSnv <- unlist(mclapply(split(d, seq_along(d) %/% 100), lapply, function(f) { # read in batches of 100
e <- new.env()
load(f, envir=e)
e$vcf
}, mc.preschedule=FALSE), recursive=FALSE)
names(finalSnv) <- sub(".conse.+","",dir(p, pattern="*.vcf.RData", full.names=FALSE))
p <- "../final/annotated_014/cn"
finalBB <- list()
for( f in dir(p, pattern="*.bb_granges.RData", full.names=TRUE)){
load(f)
colnames(mcols(bb)) <- sub("star.1","time.star",colnames(mcols(bb)) ) # Fix naming problem
finalBB[[f]] <- bb
}
names(finalBB) <- sub(".conse.+","",dir(p, pattern="*.bb_granges.RData", full.names=FALSE))
p <- "../final/annotated_014/indel"
d <- dir(p, pattern="*.vcf.RData", full.names=TRUE)
finalIndel <- unlist(mclapply(split(d, seq_along(d) %/% 100), lapply, function(f) { # read in batches of 100
e <- new.env()
load(f, envir=e)
e$vcfIndel
}, mc.preschedule=FALSE), recursive=FALSE)
names(finalIndel) <- sub(".conse.+","",dir(p, pattern="*.vcf.RData", full.names=FALSE))
finalClusters <- list()
finalPurity <- numeric()
p <- "../final/annotated_014/clusters"
for( f in dir(p, pattern="*.RData", full.names=TRUE)){
load(f)
finalClusters[[f]] <- clusters
finalPurity[f] <- purity
}
names(finalClusters) <- names(finalPurity) <- sub(".conse.+","",dir(p, pattern="*.RData", full.names=FALSE))
finalDriversAnnotated <- finalDrivers
d <- info(finalSnv[[3]])[seq_along(finalDriversAnnotated),19:32]
#d[,] <- NA
mcols(finalDriversAnnotated)[colnames(d)] <- d
for(i in seq_along(finalDriversAnnotated)){
if(finalDriversAnnotated$mut_type[i] %in% c("snv","mnv")){
v <- finalSnv[[as.character(finalDriversAnnotated$sample[i])]]
}else{
v <- finalIndel[[as.character(finalDriversAnnotated$sample[i])]]
}
j <- findOverlaps(finalDriversAnnotated[i], v, select='first')
if(!is.na(j)){
mcols(finalDriversAnnotated)[i,colnames(d)] <- info(v)[j, colnames(d)]
refDepth(finalDriversAnnotated)[i] <- info(v)[j,"t_ref_count"]
altDepth(finalDriversAnnotated)[i] <- info(v)[j,"t_alt_count"]
}
else
mcols(finalDriversAnnotated)[i,colnames(d)] <- NA
}
p <- "../final/annotated_014/graylist/snv_mnv"
finalSnvGray <- mclapply(dir(p, pattern="*.vcf.RData", full.names=TRUE), function(f) {
e <- new.env()
load(f, envir=e)
e$vcf
})
names(finalSnvGray) <- sub(".conse.+","",dir(p, pattern="*.vcf.RData", full.names=FALSE))
finalSnv[names(finalSnvGray)] <- finalSnvGray
p <- "../final/annotated_014/graylist/cn"
finalBBGray <- list()
for( f in dir(p, pattern="*.bb_granges.RData", full.names=TRUE)){
load(f)
colnames(mcols(bb)) <- sub("star.1","time.star",colnames(mcols(bb)) ) # Fix naming problem
finalBBGray[[f]] <- bb
}
names(finalBBGray) <- sub(".conse.+","",dir(p, pattern="*.bb_granges.RData", full.names=FALSE))
finalBB[names(finalBBGray)] <- finalBBGray
p <- "../final/annotated_014/graylist/indel"
finalIndelGray <- mclapply(dir(p, pattern="*.vcf.RData", full.names=TRUE), function(f) {
e <- new.env()
load(f, envir=e)
e$vcfIndel
})
names(finalIndelGray) <- sub(".conse.+","",dir(p, pattern="*.vcf.RData", full.names=FALSE))
finalIndel[names(finalIndelGray)] <- finalIndelGray
finalClustersGray <- list()
finalPurityGray <- numeric()
p <- "../final/annotated_014/graylist/clusters"
for( f in dir(p, pattern="*.RData", full.names=TRUE)){
load(f)
finalClustersGray[[f]] <- clusters
finalPurityGray[f] <- purity
}
names(finalClustersGray) <- names(finalPurityGray) <- sub(".conse.+","",dir(p, pattern="*.RData", full.names=FALSE))
finalClusters[names(finalClustersGray)] <- finalClustersGray
finalPurity <- c(finalPurity, finalPurityGray)
whiteList <- seq_along(finalSnv) %in% 1:2703
grayList <- !whiteList
finalSv <- mclapply(dir("../final/pcawg_consensus_1.6.161116.somatic_svs", pattern='*.vcf.gz$', full.names=TRUE), function(x) {
t <- try(readVcf(x))
return(t)
})
names(finalSv) <- sub("../final/pcawg_consensus_1.6.161116.somatic_svs/","", sub(".pcawg_consensus_1.6.161116.somatic.sv.vcf.gz","",dir("../final/pcawg_consensus_1.6.161116.somatic_svs", pattern='*.vcf.gz$', full.names=TRUE)))
finalSv <- finalSv[names(finalSnv)]
q1 <- sapply(finalSnv, function(vcf) mean(abs(0.5- info(vcf)$pMutCNTail) > 0.495 , na.rm=TRUE))
q5 <- sapply(finalSnv, function(vcf) mean(abs(0.5- info(vcf)$pMutCNTail) > 0.475 , na.rm=TRUE))
par(mfrow=c(1,1))
boxplot(1-q5 ~ donor2type[sample2donor[names(finalSnv)]], las=2, ylab="Fraction of data inside theoretical 95% CI")
abline(h=0.95, lty=3)
#pdf("QQplots.pdf", 4,4, pointsize=8)
par(mfrow=c(5,5))
for(i in seq_along(finalSnv)[1:25]){
n <- nrow(finalSnv[[i]])
qqnorm(qnorm(info(finalSnv[[i]])$pMutCNTail[sample(1:n, min(1e4,n))]), main=paste(substr(names(finalSnv)[i],1,8), "Q5 =", signif(q5[i],2), ", Q1 =", signif(q1[i],2)), xlim=c(-5,5), ylim=c(-5,5), pch=16)
abline(0,1, col='red')
}
#dev.off()
finalGenotypesSnv <- simplify2array(mclapply(finalSnv[whiteList], getGenotype, useNA="always"))
finalGenotypesIndel <- simplify2array(mclapply(finalIndel[whiteList], getGenotype, useNA="always"))
finalGenotypes <- aperm(abind::abind(subs=finalGenotypesSnv,indels=finalGenotypesIndel, along=5), c(1,5,2,3,4))
rm(finalGenotypesSnv,finalGenotypesIndel)
finalGenotypesSnvP <- simplify2array(mclapply(finalSnv[whiteList], probGenotype))
finalGenotypesIndelP <- simplify2array(mclapply(finalIndel[whiteList], probGenotype))
finalGenotypesP <- aperm(abind::abind(subs=finalGenotypesSnvP,indels=finalGenotypesIndelP, along=4), c(1,4,2,3))
rm(finalGenotypesSnvP,finalGenotypesIndelP)
finalGenotypesSnvQ <- simplify2array(mclapply(finalSnv[whiteList], probGenotypeTail))
finalGenotypesIndelQ <- simplify2array(mclapply(finalIndel[whiteList], probGenotypeTail))
finalGenotypesQ <- aperm(abind::abind(subs=finalGenotypesSnvQ,indels=finalGenotypesIndelQ, along=3), c(1,3,2))
rm(finalGenotypesSnvQ,finalGenotypesIndelQ)
save.image(file=dumpfile, compress=FALSE)
save(finalGenotypes, finalGenotypesP, finalGenotypesQ, file=paste0(Sys.Date(),"-FinalGenotypes.RData"))
w <- names(finalSnv)
n <- names(which(table(sample2donor[w]) > 1)) # donors
s <- w[w %in% names(sample2donor[sample2donor %in% n])] # multisamples
d <- setdiff(sample2donor[w], sample2donor[levels(finalDrivers$sample)]) # donors w/o driver
u <- sample2donor[s[sample2donor[s] %in% intersect(d,n)]]
selectedSamples <- !w %in% setdiff(s[!s %in% finalDrivers$sample ], names(u)[!duplicated(u)])
uniqueSamples <- !duplicated(sample2donor[names(finalSnv)])
f <- function(x) unlist(sapply(seq_along(x), function(i) rep(i, x[i])))
d <- t(asum(finalGenotypesP[,"subs",,], 1))
o <- order(droplevels(donor2type[sample2donor[rownames(d)]]), -d[,1]/rowSums(d))
I <- t(apply(d/rowSums(d), 1, function(x) f(mg14:::roundProp(x * 100,p=100))))
d <- t(asum(finalGenotypesP[,"indels",,], 1))
J <- t(apply(d/rowSums(d), 1, function(x) if(!any(is.nan(x))) f(mg14:::roundProp(x * 100,p=100)) else rep(NA,100)))
s <- cumsum(table(droplevels(donor2type[sample2donor[rownames(d)]][o])))
col <- RColorBrewer::brewer.pal(9, "Set1")[c(3,4,2,1,9)] ## Colors for early-subclonal
par(fig=c(0,1,0,1),mar=c(1,4,1,1)+.1, mgp=c(2,.5,0), mfrow=c(3,1), bty="n", las=2, xpd=FALSE)
image(z=I[o,], x=1:nrow(I), useRaster=TRUE, col=col, xaxt="n", ylab="SNVs")
abline(v=s, col='white')
image(z=J[o,], x=1:nrow(I),useRaster=TRUE, col=col, xaxt="n", ylab="Indels")
abline(v=s, col='white')
par(bty="n", xpd=NA)
plot(NA,NA, xaxt="n", yaxt="n", xlab="", ylab="", xlim=c(0, nrow(J)), ylim=c(0,1), xaxs="i", yaxs='i')
d0 <- s - diff(c(0,s))/2
d1 <- mg14:::mindist(d0,30)
segments(d0, 1.12, d0, 1.2)
segments(d0, 1.12, d1, 1.08)
segments(d1, 1.08, d1, 1)
mg14::rotatedLabel(x0 = d1, names(s), y0=1)
legend("bottom", fill=col, legend=paste(dimnames(finalGenotypes)[[3]]), bty="n", horiz=TRUE, title="Mutation timing")
#t <- 12/8
#dev.copy2pdf(file="finalMutationProp.pdf", width=9*t, height=2.7*t, pointsize=8*t)
f <- function(x) unlist(sapply(seq_along(x), function(i) rep(i, x[i])))
d <- t(asum(finalGenotypesP[,,,], 1:2))
o <- order(droplevels(donor2type[sample2donor[rownames(d)]]), -d[,1]/rowSums(d))
I <- t(apply(d/rowSums(d), 1, function(x) f(mg14:::roundProp(x * 100,p=100))))
s <- cumsum(table(droplevels(donor2type[sample2donor[rownames(d)]][o])))
col <- RColorBrewer::brewer.pal(9, "Set1")[c(3,4,2,1,9)] ## Colors for early-subclonal
par(fig=c(0,1,0,1),mar=c(1,4,1,1)+.1, mgp=c(2,.5,0), mfrow=c(2,1), bty="n", las=2, xpd=FALSE)
image(z=I[o,], x=1:nrow(I), useRaster=TRUE, col=col, xaxt="n", ylab="Point mutations")
abline(v=s, col='white')
par(bty="n", xpd=NA)
plot(NA,NA, xaxt="n", yaxt="n", xlab="", ylab="", xlim=c(0, nrow(I)), ylim=c(0,1), xaxs="i", yaxs='i')
d0 <- s - diff(c(0,s))/2
d1 <- mg14:::mindist(d0,30)
segments(d0, 1.12, d0, 1.2)
segments(d0, 1.12, d1, 1.08)
segments(d1, 1.08, d1, 1)
mg14::rotatedLabel(x0 = d1, names(s), y0=1)
legend("bottom", fill=col, legend=paste(dimnames(finalGenotypes)[[3]]), bty="n", horiz=TRUE, title="Mutation timing")
#t <- 12/8
#dev.copy2pdf(file="finalMutationPropAll.pdf", width=9*t, height=1.8*t, pointsize=8*t)
p <- asum(finalGenotypesP[,,,selectedSamples[whiteList]], c(2,4))
g <- asum(finalGenotypes[,,,,selectedSamples[whiteList]], c(2,4:5))
g <- g[order(rowSums(g), decreasing=TRUE),]
colnames(g) <- paste(colnames(g))
rownames(g) <- paste(rownames(g))
rownames(p) <- paste(rownames(p))
p <- p[rownames(g),]
w <- rowSums(g) > 0
w[1] <- FALSE
Unique loci
l <- sapply(strsplit(rownames(p),"::"), function(x) paste(x[2:3], collapse=":"))
pu <- t(sapply(unique(l), function(u) asum(p[l==u,,drop=FALSE], 1)))
gu <- t(sapply(unique(l), function(u) asum(g[l==u,,drop=FALSE], 1)))
gu <- gu[order(rowSums(gu), decreasing=TRUE),]
pu <- pu[rownames(gu),]
wu <- rowSums(gu) > 0
wu[1] <- FALSE
par(fig=c(0,1,0,1),mar=c(1,4,1,1)+.1, mgp=c(3,.5,0))
barplot(t(gu[wu,]), col=col, las=2, legend=TRUE, args.legend=list("topright", bty='n'), ylab="Number of cases", names.arg=rep("",sum(wu)), border=NA)
#mg14::rotatedLabel(x=.Last.value,labels=rownames(g)[62:201], cex=.25)
u <- par("usr")
v <- c(
grconvertX(u[1:2], "user", "ndc"),
grconvertY(u[3:4], "user", "ndc")
)
v <- c( (v[1]+v[2])/3.33, v[2], (v[3]+v[4])/3, v[4] )
par( fig=v, new=TRUE, mar=c(0,0,0,0) )
b <- barplot(t(gu[2:51,]), col=col, las=2, names.arg=rep("",50))
mg14::rotatedLabel(x=b,labels=rownames(gu)[2:51], cex=.5)
#dev.copy2pdf(file="finalDrivers.pdf", width=9, height=5, pointsize=8)
par(fig=c(0,1,0,1),mar=c(3,4,1,1)+.1, mgp=c(3,.5,0))
w <- rowSums(pu) > 0
n <- 50
b <- barplot(t(pu /rowSums(pu))[,w], width=c(rep(2,n+1), rep(0.2,sum(w)-n-1)), space=c(0,2,rep(0.1,n), rep(0,sum(w)-n-2)), col=col, border=NA, ylab="Fraction of mutations", names.arg=rep("",sum(w)))
mg14::rotatedLabel(x=b[1:(n+1)],labels=c("Genome-wide", rownames(pu)[2:(n+1)]), cex=.5)
#s <- 12/8
#dev.copy2pdf(file="finalDriversProp.pdf", width=9*s, height=3*s, pointsize=8*s)
tt <- abind::abind(pu[-1,], pu[-1,] + 0.5, along=3)
par(mar=c(3,3,1,1), mgp=c(2,.5,0), bty="L")
r <- array(apply(tt/rep(colSums(tt), each=nrow(tt)), 3, function(x) apply(x, 2, function(y) cumsum(sort(y, decreasing=TRUE)))), dim=dim(tt))
plot(cumsum(sort(r[,1,1], decreasing=TRUE)), col=NA, type='s', xlab="Number of different driver genes", ylab="Fraction of driver mutations", log='', ylim=c(0,1), xlim=c(0,664), xaxs='i', yaxs='i')
for(j in 1:4) {
polygon(c(1:nrow(r), nrow(r):1), c(r[,j,1], rev(r[,j,2])), col=paste0(col[j],"33"), border=NA)
lines((r[,j,1]+r[,j,2])/2, col=col[j], lwd=2)
points(y=0,x=which.min((r[,j,1]+r[,j,2])/2 < 0.5), col=col[j], pch="|")
}
legend("bottomright", col=col[1:4], lty=1, paste0(c("clonal [early]", "clonal [late]", "clonal [other]", "subclonal"), ", n=", round(colSums(p[-1,]))[-5]), bty="n")
abline(h=0.5, lty=3)
#dev.copy2pdf(file="finalGenesCumulative.pdf", width=4,height=4)
par(mar=c(4,3,2.5,1), mgp=c(2,.5,0), bty="L")
d50 <- apply((r[,,1]+r[,,2])/2 < 0.5, 2, which.min)[c(1,3,2,4)]
b <- barplot(d50,las=2, col=col[c(1,3,2,4)], border=NA, ylab="Genes contributing 50% of driver mutations")
segments(b,apply(r[,,1] < 0.5, 2, which.min)[c(1,3,2,4)],b,apply(r[,,2] < 0.5, 2, which.min)[c(1,3,2,4)])
mg14::rotatedLabel(x=b,labels=c("clonal [early]", "clonal [late]", "clonal [other]", "subclonal")[c(1,3,2,4)])
#dev.copy2pdf(file="finalGenes50.pdf", width=3,height=4)
Final ploidy, weighted if subclonal CN
finalPloidy <- sapply(finalBB, averagePloidy)
names(finalPloidy) <- names(finalBB)
Final homozygousity, weighted if subclonal CN
finalHom <- sapply(finalBB, averageHom)
names(finalHom) <- names(finalBB)
isWgd <- .classWgd(finalPloidy, finalHom)
plot(finalHom, finalPloidy, col=.classWgd( finalPloidy, finalHom)+1, xlim=c(0,1))
fracGenomeWgdComp <- t(sapply(finalBB, function(bb) {
fgw <- try(fractionGenomeWgdCompatible(bb));
if(class(fgw)!='try-error') fgw
else rep(NA,10)}))
rownames(fracGenomeWgdComp) <- names(finalBB)
wgdStar <- factor(rep(1,nrow(fracGenomeWgdComp)), levels=0:3, labels=c("unlikely","uninformative","likely","very likely"))
wgdStar[fracGenomeWgdComp[,"avg.ci"]<=0.75 & fracGenomeWgdComp[,"nt.total"]/chrOffset["MT"] >= 0.33 ] <- "likely"
wgdStar[fracGenomeWgdComp[,"nt.wgd"]/fracGenomeWgdComp[,"nt.total"] < 0.66] <- "unlikely"
wgdStar[wgdStar=="likely" & fracGenomeWgdComp[,"nt.wgd"]/fracGenomeWgdComp[,"nt.total"] > 0.8 & fracGenomeWgdComp[,"sd.wgd"] < 0.1 & fracGenomeWgdComp[,"nt.total"]/chrOffset["MT"] > 0.5] <- "very likely"
names(wgdStar) <- names(finalBB)
prop.table(table(wgdStar[!isWgd]))
##
## unlikely uninformative likely very likely
## 0.203061224 0.775510204 0.019387755 0.002040816
wgdPoss <- !isWgd & 2.5 - 1.5 * finalHom <= finalPloidy
wgdStat <- factor(wgdPoss + 2*isWgd - wgdPoss*isWgd, labels=c("absent","possible","present"))
table(wgdStat, wgdStar)
## wgdStar
## wgdStat unlikely uninformative likely very likely
## absent 384 1492 9 0
## possible 14 28 29 4
## present 68 1 573 176
This one aggregates individual segments by chromosome
aggregatePerChromosome <- function(bb, isWgd=FALSE){
.aggregateSegments <- function(m){
#m <- mcols(bb)
t <- weighted.mean(m$time, m$n.snv_mnv, na.rm=TRUE)
n <- sum(m$n.snv_mnv[!is.na(m$time)], na.rm=TRUE)
sd <- sd(m$time, na.rm=TRUE)
ci <- weighted.mean(m$time.up-m$time.lo, m$n.snv_mnv, na.rm=TRUE)
w <- sum(m$width[!is.na(m$time)], na.rm=TRUE)
c(time=t, n=n, sd=sd, ci=ci,w=w)
}
# if(!isWgd){
s <- split(as.data.frame(bb)[,c("time","time.up","time.lo","n.snv_mnv","width")], seqnames(bb))
r <- t(sapply(s, .aggregateSegments))
r <- r[c(1:22,"X"),]
# }else{
w <- .aggregateSegments(as.data.frame(bb))
r <- rbind(r,WGD=w)
# }
return(r)
}
allChrAgg <- simplify2array(mclapply(finalBB, aggregatePerChromosome, mc.cores=2))
t <- allChrAgg[1:23,"time",!isWgd]
t[allChrAgg[1:23,"w",!isWgd] < diff(chrOffset)[1:23]*.33] <- NA
s <- split(as.data.frame(t(t)), droplevels(donor2type[sample2donor[names(finalSnv)]])[!isWgd])
n <- 10
at <- function(x, n){
if(sum(!is.na(x))<3) return(rep(sum(!is.na(x))/n,n))
bw=if(sum(!is.na(x))< 6) 0.5 else "nrd0"
d <- density(x, n=n, from=1/n/2, to=1-1/n/2, bw=bw, na.rm=TRUE)
d$y/sum(d$y)*d$n
}
allChrCancerHist <- sapply(s, apply, 2, at, n=n, simplify="array")
u <- split(data.frame(WGD=allChrAgg["WGD","time",isWgd]), droplevels(donor2type[sample2donor[names(finalSnv)]])[isWgd])
wgdCancerHist <- sapply(u, function(x) if(nrow(x)>0){at(x$WGD,n=n)}else{rep(0,n)}, simplify="array")
allChrCancerHist <- abind::abind(allChrCancerHist, All=sapply(sapply(s, as.matrix), at, n=n, simplify="array")/23*5, WGD=wgdCancerHist, along=2)
prgn <- RColorBrewer::brewer.pal(11,"PRGn")
set1 <- RColorBrewer::brewer.pal(9,"Set1")
col <- colorRampPalette(set1[c(4,9,3)])(n)
p <- 0
v <- table(droplevels(donor2type[sample2donor[names(finalSnv)]]))
h <- (allChrCancerHist + p) / rep(v + p, each=prod(dim(allChrCancerHist)[1:2]))
h <- aperm(h, c(2,3,1))
a <- colMeans(h[c("All","WGD"),,] * c(23/5,1)) %*% 1:n / asum(h* c(23/5,1), c(1,3))
o <- order(-a)
h <- h[,o,]
w <- v[o]>=15 & apply(h, 2, max) > 0.05*8/n
h <- h[,w,]
m <- 0.02
layout(matrix(1:prod(dim(h)[1:2]+1), ncol=dim(h)[1]+1, byrow=TRUE), height=c(rev(apply(h, 2, max))+m, 0.15), width=c(5, rep(1,dim(h)[1])))
par(mar=c(0.05,0.1,0,0.1), xpd=NA)
for(j in dim(h)[2]:0+1) for(i in 0:dim(h)[1]+1) {
#if(all(h[i,j,]==0))
if(i==1 & j !=1) {plot(NA,NA,xlab="",ylab="", xaxt="n",yaxt="n",xlim=c(0,1),ylim=c(0,1), bty="n")
text(1,0,dimnames(h)[[2]][j-1],pos=2)
next
}
if(j ==1 ){
plot(NA,NA,xlab="",ylab="", xaxt="n",yaxt="n",xlim=c(0,1),ylim=c(0,1), bty="n")
if(i==1) next
text(0.5,1,dimnames(h)[[1]][i-1],pos=1)
next
}
r <- c(0,max(h[,j-1,]+m))
par(bty=if(i==2)"L" else "n")
barplot(h[i-1,j-1,], ylim=r, width=1/n,space=0, col=rev(col), xaxt="n", yaxt="n", xlab="",ylab="", border=NA,xpd=TRUE, yaxs="i", xaxs="i", xlim=c(-0.5/n,1+0.5/n))
axis(side=1, at=c(-0.5/n,1+0.5/n), labels=c("",""), tcl=-.1)
if(i>1)
abline(v=0, col='lightgrey', lty=3)
if(i==2){
abline(h=0.05*8/n, col='lightgrey', lty=1)
axis(side=2, at=c(0,0.05*8/n), labels=c("",""), tcl=-.1)
}
}
#dev.copy2pdf(file="histTiming.pdf",width=6, height=6, pointsize=8)
vv <- v[dimnames(h)[[2]]]
vv <- vv/sum(vv)
hh <- matrix(matrix(aperm(h, c(1,3,2)), ncol=length(vv)) %*% vv, nrow=nrow(h))
rownames(hh) <- rownames(h)
par(mar=c(3,3,1,1), mgp=c(2,.5,0), tcl=-0.5, bty="L", xpd=NA)
barplot(hh["WGD",], space=0, col=rev(col), xlab="Time [mutations]", ylab="Relative frequency", width=0.1, ylim=c(0,.065), yaxs='r', border=NA)
axis(side=1)
barplot(hh["All",], space=0, col=rev(col), xlab="Time [mutations]", ylab="Relative frequency", width=0.1, ylim=c(0,.065), yaxs='r', border=NA)
axis(side=1)
#dev.copy2pdf(file="histTimingPanCan.pdf",width=2, height=2, pointsize=8)
d <- fracGenomeWgdComp
i <- d[,"avg.ci"]<=0.5 & d[,"chr.all"] > 2 #& fracGenomeWgdComp[,"nt.total"]/chrOffset["MT"] >= 0.1
timingClass <- paste(ifelse(isWgd,"WGD","ND"), ifelse(!i, "uninformative",""))
timingClass[i] <- paste0(timingClass[i], ifelse(d[i,"nt.wgd"]/d[i,"nt.total"] > 0.75,"sync","async"))
#timingClass[i] <- paste0(timingClass[i], cut(fracGenomeWgdComp[i,"nt.wgd"]/fracGenomeWgdComp[i,"nt.total"], c(0,0.5,0.8,1), include.lowest=TRUE))
timingClass <- factor(timingClass)
#pdf("TimingClass.pdf", 4,4)
colTime <- c("#A0C758","#6B8934","#BEC6AD","#CEB299","#CC6415","#EF7B00")
names(colTime) <- levels(timingClass)[c(4,5,6,3,2,1)]
c <- c(RColorBrewer::brewer.pal(9, "Pastel1"),"#DDDDDD")
t <- table(timingClass)[names(colTime)]
pie(t, init.angle=90, labels=paste0(names(t), ",\nn=", t), col=colTime)
#t <- table(isWgd)
par(new=TRUE)
symbols(x=0,y=0,circles=0.4, inches=FALSE, add=TRUE, bg="white")
#pie(t, labels=c("",""), col=NA, lwd=5, lty=1, init.angle=90)
#dev.off()
colnames(d) <- c("ntCoamp","ntAmp","timeCoamp","segCoamp","segAmp","chrCoamp","chrAmp", "sdTimeCoamp","avgCiSeg","sdAllSeg")
timingInfo <- data.frame(avgPloidy=finalPloidy, avgHom=finalHom, isWgd=isWgd, d, informative=i, timingClass=timingClass)
#tab <- rbind(tab, data.frame(WGD_call=otherStat, WGD_timing=NA, ploidy=otherPloidy, hom=otherHom, nt.wgd=NA, nt.total=NA, time.wgd=NA, sd.wgd=NA,avg.ci=NA, sd.all=NA))
write.table(file=paste0(Sys.Date(),"-Timing-info.txt"), timingInfo, quote=FALSE, row.names=TRUE, col.names=TRUE, sep="\t")
w <- which(wgdStar=="likely" & !isWgd)
#pdf(paste0(names(w[1]), ".pdf"), 4,4, pointsize=8)
plotSample(w[1])
plotSample(w[2])
plotSample(w[3])
#dev.off()
w <- which(wgdStar=="very likely" & isWgd)
#pdf(paste0(names(w[1]), ".pdf"), 4,4, pointsize=8)
plotSample(w[1])
plotSample(w[2])
plotSample(w[9])
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): qbeta(a, *) =: x0 with |pbeta(x0,*) - alpha| = 0.022338 is not
## accurate
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): qbeta(a, *) =: x0 with |pbeta(x0,*) - alpha| = 0.024964 is not
## accurate
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): pbeta_raw(-nan, a=3.4044e+20, b=1.07421e-06, ..) -> bratio() gave
## error code 9
## Warning in qbeta(c(0.025, 0.975), beta[1], beta[2]): full precision may not have been achieved in 'qbeta'
#dev.off()
w <- which(wgdStar=="unlikely" & !isWgd & fracGenomeWgdComp[,"nt.total"]/chrOffset["MT"] > 0.25 & fracGenomeWgdComp[,"avg.ci"] < 0.5)
#pdf(paste0(names(w[1]), ".pdf"), 4,4, pointsize=8)
plotSample(w[1])
plotSample(w[2])
plotSample(w[3])
#dev.off()
w <- which(fracGenomeWgdComp[,"time.wgd"]<0.1 & fracGenomeWgdComp[,"nt.total"]/chrOffset["MT"] > 0.1 & !isWgd & donor2type[sample2donor[names(finalBB)]]=="CNS-GBM")
#pdf(paste0(names(w[1]), ".pdf"), 4,4, pointsize=8)
plotSample(w[1])
plotSample(w[2])
plotSample(w[3])
#dev.off()
Calculate number of substitutions and deciles per tumour type
n <- nSub <- sapply(finalSnv, nrow)
n[timingInfo$timeCoamp==0] <- NA
q <- unlist(sapply(split(n, donor2type[sample2donor[names(finalSnv)]]), function(x) as.numeric(cut(x, {if(sum(!is.na(x))>1) quantile(x, seq(0,1,0.1), na.rm=TRUE) else 1:10}, include.lowest=TRUE))))
m <- match(names(finalSnv),unlist(split(names(finalSnv), donor2type[sample2donor[names(finalSnv)]])))
t <- timingInfo$timeCoamp
table(decSub=q[m], time=cut(t, seq(0,1,0.1)))
## time
## decSub (0,0.1] (0.1,0.2] (0.2,0.3] (0.3,0.4] (0.4,0.5] (0.5,0.6] (0.6,0.7] (0.7,0.8] (0.8,0.9] (0.9,1]
## 1 19 14 12 23 27 18 25 28 40 13
## 2 13 11 12 18 18 18 21 32 29 28
## 3 15 11 16 13 15 18 31 34 24 21
## 4 16 13 13 10 22 16 12 28 37 29
## 5 8 13 14 14 15 18 18 36 35 34
## 6 15 8 20 11 12 18 19 21 38 34
## 7 8 13 14 12 16 15 26 26 37 26
## 8 13 5 16 15 16 19 23 29 37 28
## 9 20 18 10 15 20 14 16 31 25 28
## 10 27 17 14 17 13 23 17 25 24 40
Also calculate deciles of timing per tumour type
t[t==0] <- NA
r <- unlist(sapply(split(t, donor2type[sample2donor[names(finalSnv)]]), function(x) as.numeric(cut(x, {if(sum(!is.na(x))>1 & length(unique(x)) > 2) quantile(jitter(x), seq(0,1,0.1), na.rm=TRUE) else 1:10}, include.lowest=TRUE))))
table(decSub=q[m], decTime=r[m])
## decTime
## decSub 1 2 3 4 5 6 7 8 9 10
## 1 25 25 29 22 21 20 13 23 16 20
## 2 16 20 21 16 21 22 22 19 19 23
## 3 21 18 15 27 12 25 26 17 18 15
## 4 20 14 23 16 21 24 19 18 19 21
## 5 12 27 16 20 20 13 15 26 28 24
## 6 22 14 20 14 19 21 25 17 22 20
## 7 9 19 23 26 18 26 17 12 23 19
## 8 15 24 22 16 19 22 23 15 24 20
## 9 25 21 17 23 18 16 15 25 11 24
## 10 40 18 14 21 23 20 19 13 18 27
Plot
#pdf("timeNsub.pdf", 3, 2.5, pointsize=8)
par(mar=c(3,4,1,1), bty="n", mgp=c(2,.5,0), las=1, tcl=-.25)
d <- as.character(donor2type[sample2donor[names(finalSnv)]])
lineCol <- tissueColors
lineCol[grep("Lung", names(lineCol))] <- "black"
plot(t, nSub, log='y', bg=tissueColors[d], pch=21, xlab="Typical amplification time", ylab="", cex=.66, lwd=.5, yaxt="n", ylim=c(100,3e6))
mtext(side=2, "Number of SNVs", line=3, las=3)
u <- round(par("usr")[3:4])
a <- axisTicks(par("usr")[3:4], log=TRUE)
axis(side=2, at=a, labels=prettyNum(a))
b <- sapply(a[-length(a)], function(x) (1:10)*x)
axis(side=2, at=b, labels=rep("", length(b)), tcl=-.1)
#dev.off()
Load preprocessed data, aggregated by chromsome
load("two_gain_times.RData")
doubleGains <- as.data.frame(T.i.F)
m <- paste(doubleGains$sample, doubleGains$cnMaj, doubleGains$cnMin, doubleGains$chromosome, sep="_")
s <- split(doubleGains[,c("sample","tumor_type","T1_raw","T2_raw","n_mutations")], m)
doubleGainsAggregated <- Reduce("rbind",sapply(s, function(x) {
data.frame(sample=x$sample[1], tumor_type=x$tumor_type[1], T1_raw=weighted.mean(x$T1_raw, x$n_mutations),T2_raw=weighted.mean(x$T2_raw, x$n_mutations), n_mutations=sum(x$n_mutations))
}, simplify=FALSE))
Plot Pan-Can
x <- doubleGainsAggregated$T1_raw/pmax(1, doubleGainsAggregated$T2_raw)
y <- doubleGainsAggregated$T2_raw/pmax(1, doubleGainsAggregated$T2_raw)
o <- order(doubleGainsAggregated$n_mutations, decreasing=TRUE)
plot(x[o],
y[o],
bg=tissueColors[as.character(donor2type[sample2donor[names(finalSnv)[doubleGainsAggregated$sample[o]]]])], pch=21,
col=tissueBorder[as.character(donor2type[sample2donor[names(finalSnv)[doubleGainsAggregated$sample[o]]]])],
xlab="Time [mutations], first gain",
ylab="Time [mutations], second gain",
cex=sqrt(doubleGainsAggregated$n_mutations[o]/500)+0.1,
lwd=0.5)
t <- table(doubleGainsAggregated$sample)
Plot by timing class
names(timingClass) <- names(finalSnv)
par(mfrow=c(2,2))
for(l in grep("uninformative",levels(timingClass), invert=TRUE, value=TRUE)){
w <- which(timingClass[doubleGains$sample]==l)
o <- intersect(order(doubleGainsAggregated$n_mutations, decreasing=TRUE),w)
plot(x[o],
y[o],
bg=tissueColors[as.character(donor2type[sample2donor[names(finalSnv)[doubleGainsAggregated$sample[o]]]])], pch=21,
col=tissueBorder[as.character(donor2type[sample2donor[names(finalSnv)[doubleGainsAggregated$sample[o]]]])],
xlab="Time [mutations], first gain",
ylab="Time [mutations], second gain",
cex=sqrt(doubleGainsAggregated$n_mutations[o]/500)+0.1)
title(main=l, line=0, font.main=1)
}
Individual samples
par(mfrow=c(5,5))
for(i in as.numeric(names(t)[t>5])[1:25]){
w <- which(doubleGainsAggregated$sample==i)
plot(x[w],y[w],
col=tissueBorder[as.character(donor2type[sample2donor[names(finalSnv)[doubleGainsAggregated$sample[w]]]])],
bg=tissueColors[as.character(donor2type[sample2donor[names(finalSnv)[doubleGainsAggregated$sample[w]]]])],
type='p', xlim=c(0,1), ylim=c(0,1),
xlab="time 1",
ylab="time 2",
pch=21,
cex=sqrt(doubleGainsAggregated$n_mutations[w]/500+0.1))
}
Relative latency
w <- y < 1 & x > 0
r <- ((y-x)/(1-x))
h <- hist(r[w], breaks=seq(0,1,0.025), plot=FALSE)
e <- d <- density(r[w], from=-1, to=2, bw="SJ")
i <- which(d$x < 0)
d$y[max(i) + seq_along(i)] <- d$y[max(i) + seq_along(i)] + d$y[rev(i)]
i <- which(d$x > 1)
d$y[min(i) - seq_along(i)] <- d$y[min(i) - seq_along(i)] + d$y[i]
i <- which(d$x >0 & d$x < 1)
d <- list(x=d$x[i], y=d$y[i])
plot(h$mids,h$counts/sum(h$counts), pch=19, col='grey',ylim=c(0,max(h$counts/sum(h$counts))), xlab="Latency of second gain", ylab="Relative frequency", type='h')
#lines(d, xlim=c(0,1), type='l')
plot(d$x,cumsum(d$y * diff(d$x)[1]), xlim=c(0,1), type='l', ylim=c(0,1), xlab="Relative time of second gain", ylab="CDF")
By timing class
c <- cut(r[w], 20)
t <- table(timingClass[doubleGainsAggregated$sample[w]],c)
barplot(t[names(colTime),]/sum(t), border=NA, col=colTime, width=1/24, space=0.2, names.arg=rep("",20, bty="L", yaxs="s"))
.par()
axis(side=1, line=0.2)
Copy number increments
cn <- do.call("rbind", sapply(names(finalBB), function(n){
bb <- finalBB[[n]]
data.frame(sample=n, chr=seqnames(bb), width=width(bb), M=bb$major_cn, m=bb$minor_cn)}, simplify=FALSE))
t <- table(pmin(cn$M,3) , pmax(3,round(log10(cn$width),1)), timingClass[cn$sample])
x <- as.numeric(colnames(t))
plot(NA,NA, type='p', col=colTime[1], pch=16, ylim=c(0,0.8), xlim=range(10^x), xlab="Length of segment", ylab="Proportion >2 allelic copies", log='x')
for(n in dimnames(t)[[3]]) {
y <- as.numeric(t[4,,n]/colSums(t[3:4,,n]))
lines(10^x,y, type='p', col=paste0(colTime[n],"44"), pch=16, cex=1)#sqrt(colSums(t[3:4,,i]/1000)))
lines(10^x, predict(loess(y ~x)), col=colTime[n], lwd=2)
}
tt <- mg14:::asum(t[,x>=7,],2)
o <- names(colTime)
p <- tt[4,o]/colSums(tt[3:4,o])
ci <- sapply(c(0.025, 0.975), qbeta, 0.025, shape1=tt[4,o]+1, shape2=tt[3,o]+1)
barplot(p, col=colTime, border=NA, las=2, ylab="Proportion >2 allelic copies", names=sub("ormative","",sub("near-diploid", "ND", names(colTime))), ylim=c(0,0.4)) -> b
segments(b, ci[,1], b, ci[,2])
Simulate higher order gains to cross-check
n <- 100
c <- 40
purity=0.7
bb <- GRanges(seqnames=1, IRanges(1,1e8), major_cn=3, minor_cn=1, clonal_frequency=purity, n.snv_mnv=n)
bb$total_cn <- bb$major_cn+bb$minor_cn
t3 <- 0.8
t2 <- 0.8 # Simultaneous second amplification
d <- data.frame(cluster=1, n_ssms=1, proportion=purity)
cnStates <- defineMcnStates(bb,clusters=d, purity=purity)
pi <- matrix(c(4,2,1,0,1,0,0,0,1), byrow=TRUE, ncol=3) %*% c(1-t2,t2-t3,t3)
pi <- pi/sum(pi)
cnStates[[1]][,"P.m.sX"] <- pi
rho=0.01
cnStates[[1]][,"power.m.s"] <- 1-pbetabinom(2, size=c, prob=cnStates[[1]][,"f"], rho=rho )
bb$timing_param <- cnStates
s <- simplify2array(mclapply(1:50, function(foo){
set.seed(foo)
v <- simulateMutations(bb, n=40)
bb0 <- bb
bb0$timing_param <- NULL
L <- computeMutCn(v, bb0, clusters=d, purity=purity, rho=rho, n.boot=0)
L$P[[1]]
}))
boxplot(t(s[2:3,"T.m.sX",]), at=3:2, xlab="Simulated time point", names=c("t2","t3"))
points(3:2,c(t2-t3, t3), col='red', pch=19)
l <- s[2,"T.m.sX",]/(1-s[3,"T.m.sX",])
x <- seq(0,1,0.05)
plot(x[-1]+x[2]/2, as.numeric(prop.table(table(cut(l[l<1], x)))), xlab="Latency", ylab="frequency", type='h')
axis(side=1)
age <- clinicalData$donor_age_at_diagnosis
names(age) <- clinicalData$icgc_donor_id
typeNa <- gsub("\t","",strsplit("Bone-Cart
Breast-LobularCa
Breast-DCIS
Lymph-NOS
Myeloid-MDS
Cervix-AdenoCa", "\n")[[1]])
Calculate effective genome size, i.e. time-averaged ploidy from mutation copy numbers
effGenome <- unlist(mclapply(finalSnv, function(vcf) {
w <- info(vcf)$CLS!="subclonal"
if(donor2type[sample2donor[meta(header(vcf))$META["ID",]]]=="Skin-Melanoma")
w <- w & isDeaminationNoUV(vcf)
else
w <- w & isDeamination(vcf)
2/avgWeights(vcf[na.omit(w)])
}))
names(effGenome) <- names(finalSnv)
finalPower <- sapply(names(finalBB), function(n) {
x <- finalBB[[n]]
f <- finalClusters[[n]]$proportion
for(i in 1:length(x)){
t <- x$timing_param[[i]]
p <- t[match(f, t[,"cfi"]), "power.s"]
if(!is.null(p)) if(all(!is.na(p))) break
}
if(is.null(p)) return(rep(NA, length(f)))
return(p)
})
plot(unlist(lapply(wccClusters[names(finalSnv)], `[[`, "n_ssms")),unlist(lapply(finalClusters[names(finalSnv)], `[[`, "n_ssms"))/ unlist(finalPower), log='xy',
xlab="Cluster size WCC (consensus)", ylab="Cluster size MutationTime.R")
The following calculates the length of the trunk (clonal mutations) and the depth of the MRCA, scaled by power and using a branching subclonal phylogeny.
branchDeam <- t(simplify2array(mclapply(finalSnv, function(vcf) {
n <- meta(header(vcf))$META["ID",]
if(donor2type[sample2donor[n]]=="Skin-Melanoma")
w <- isDeaminationNoUV(vcf)
else
w <- isDeamination(vcf)
if(sum(w)==0) return(c(0,0))
p <- info(vcf)$pSub[w];
n.subclonal <- aggregate(p, list(info(vcf)$CNF[w]), sum, na.rm=TRUE)
m <- apply(abs(outer(n.subclonal$Group.1, finalClusters[[n]]$proportion, `-`)),1,which.min) # Match to subclones
p.subclonal <- finalPower[[n]][m] # Power of subclones
b.subclonal <- n.subclonal$x %*% (n.subclonal$Group.1 / p.subclonal) / max(n.subclonal$Group.1) # Subclonal branch, power adjusted & 1/f-scaled
b.clonal <- sum(1-p, na.rm=TRUE)/finalPower[[n]][1] # Clonal branch (trunk), power adjusted & 1/f-scaled
c(b.subclonal, b.clonal)})))
d <- droplevels(donor2type[sample2donor[names(finalSnv)]])
typesSubclones <- setdiff(levels(d), c(typeNa, names(which(table(d)<5))))
nClones <- sapply(finalClusters, nrow)
Comparison to linear branching
branchDeamLinear <- t(simplify2array(mclapply(finalSnv, function(vcf) {
if(donor2type[sample2donor[meta(header(vcf))$META["ID",]]]=="Skin-Melanoma")
w <- isDeaminationNoUV(vcf)
else
w <- isDeamination(vcf)
if(sum(w)==0) return(c(0,0))
n <- meta(header(vcf))$META["ID",]
if(donor2type[sample2donor[n]]=="Skin-Melanoma")
w <- isDeaminationNoUV(vcf)
else
w <- isDeamination(vcf)
if(sum(w)==0) return(c(0,0))
p <- info(vcf)$pSub[w];
n.subclonal <- aggregate(p, list(info(vcf)$CNF[w]), sum, na.rm=TRUE)
m <- apply(abs(outer(n.subclonal$Group.1, finalClusters[[n]]$proportion, `-`)),1,which.min) # Match to subclones
p.subclonal <- finalPower[[n]][m] # Power of subclones
b.subclonal <- n.subclonal$x %*% (1 / p.subclonal) # Subclonal branch, power adjusted
b.clonal <- sum(1-p, na.rm=TRUE)/finalPower[[n]][1] # Clonal branch (trunk), power adjusted
c(b.subclonal, b.clonal)})))
Plot
f <- (branchDeam[,1] / finalPloidy) / rowSums(branchDeam / cbind(finalPloidy, effGenome))
l <- (branchDeamLinear[,1]/ finalPloidy)/rowSums(branchDeamLinear / cbind(finalPloidy, effGenome))
t <- donor2type[sample2donor[names(finalSnv)]]
plot(f, l, xlab="Subclonal branch length (branching)", ylab="Subclonal branch length (linear)", pch=21, bg=tissueColors[t], col=tissueBorder[t], cex=tissueCex[t])
abline(0,1, lty=2)
quantile(l/f, na.rm=TRUE)
## 0% 25% 50% 75% 100%
## 1.000000 1.230433 1.787160 2.324245 18.979107
quantile(l, na.rm=TRUE)
## 0% 25% 50% 75% 100%
## 0.00000000 0.01893107 0.09696972 0.27966436 0.98292792
quantile(f, na.rm=TRUE)
## 0% 25% 50% 75% 100%
## 0.000000000 0.009730081 0.045141939 0.135827609 0.955712890
Analyse relation to age, exclude hypermutators and samples with tumour in normal 1%.
rateDeam <- cc <- list()
remove <- "8454fe53-869d-41c8-b0c8-a7929d00eec3" # a cell line, add more samples in the following
par(mfrow=c(6,6), mar=c(3,3,2,1),mgp=c(2,.5,0), tcl=-0.25,cex=1, bty="L", xpd=FALSE, las=1, xpd=FALSE)
for(n in typesSubclones){
i <- d==n
tt0 <- branchDeam[i,]/cbind(finalPloidy[i], effGenome[i]) / 3#cbind(nClones[i]-1, 1)/3 # 3Gb Haploid genome
tt0[is.infinite(tt0)|is.nan(tt0)] <- 0
yy <- rowSums(tt0)
a <- age[sample2donor[names(finalSnv)[i]]]
xx <- a
r <- yy/xx
m <- median(r[TiN[names(xx)] <= 0.01 & ! is.na(TiN[names(xx)])],na.rm=TRUE)
rateDeam[[n]] <- r
try({
w <- (r-m)^2/m^2 <= 2^2 & TiN[names(xx)] <= 0.01 & ! is.na(TiN[names(xx)])
remove <- c(remove, names(which(!w)))
plot(xx, yy, bg=tissueColors[n], col=tissueBorder[n], pch=NA, log='', xlab="Age at diagnosis", ylab="SNVs/Gb", main=n, ylim=c(0,pmin(1000,max(yy, na.rm=TRUE))), xlim=c(0,max(age, na.rm=TRUE)), cex.main=1)
#par(xpd=NA)
#segments(x0=0,y0=0, xx, yy, col=tissueLines[n], lty=tissueLty[n])
points(xx, yy, bg=tissueColors[n], col=ifelse(w,tissueBorder[n], tissueColors[n]), pch=ifelse(w,21,4))
abline(0, m, lty=3)
#lines(c(x0,2*x0), c(0,1))
#print(paste(n,cor(xx[w],yy[w],use='c'), cor(xx[w],tt0[w,] %*% c(0.2,1), use='c'), sep=": "))
l <- lm(yy~xx, data=data.frame(yy=yy[w],xx=xx[w], row.names=as.character(seq_along(yy[w]))))
f <- (summary(l))
p <- predict(l,newdata=data.frame(xx=seq(0,100,1)), se=TRUE)
polygon(c(seq(0,100,1),rev(seq(0,100,1))), c(p$fit - 2*p$se.fit, rev(p$fit+2*p$se.fit)), border=tissueBorder[n], col=paste0(tissueColors[n],"44"))
v <- which(!is.na(xx[w]*yy[w]))
cc[[n]] <- cbind(f$coefficients, f$cov.unscaled * f$sigma^2, coef(nnls::nnls(cbind(1,xx[w][v]), yy[w][v])))
})
}
## Warning in predict.lm(l, newdata = data.frame(xx = seq(0, 100, 1)), se = TRUE): prediction from a rank-deficient fit may
## be misleading
## Warning in .Method(..., deparse.level = deparse.level): number of rows of result is not a multiple of vector length (arg
## 3)
n <- names(rateDeam)
qRateDeam <- sapply(rateDeam, function(r){
m <- median(r[TiN[sample2donor[names(r)]] <= 0.01 & ! is.na(TiN[sample2donor[names(r)]])],na.rm=TRUE)
w <- (r-m)^2/m^2 <= 2^2 & TiN[sample2donor[names(r)]] <= 0.01 & ! is.na(TiN[sample2donor[names(r)]])
quantile(r[w], na.rm=TRUE)})
plot(sapply(rateDeam, median, na.rm=TRUE), pch=NA , ylab="SNVs/Gb/yr", main="CpG>TpG rate", ylim=c(0, max(qRateDeam)), cex.main=1, xaxt='n', xlab="Tumour type")
segments(seq_along(rateDeam),qRateDeam["0%",],seq_along(rateDeam), qRateDeam["100%",], col=tissueLines[n], lty=1)
points(sapply(rateDeam, median, na.rm=TRUE), pch=21, col=tissueBorder[n], bg=tissueColors[n])
length(remove)
## [1] 743
Rates as barplot
par(mar=c(6,3,1,1))
o <- order(qRateDeam["50%",])
barplot(qRateDeam["50%",][o], col=tissueColors[colnames(qRateDeam)][o], border=tissueLines[colnames(qRateDeam)][o], las=2,names.arg=rep("",ncol(qRateDeam)) , ylab="CpG>TpG rate [SNVs/Gb/yr]", ylim=c(0, max(qRateDeam))) -> b
mg14::rotatedLabel(b, labels=colnames(qRateDeam)[o])
segments(b, qRateDeam["50%",][o], b, qRateDeam["100%",][o], col=tissueLines[colnames(qRateDeam)][o], lwd=2)
segments(b, qRateDeam["0%",][o], b, qRateDeam["50%",][o], col=tissueBorder[colnames(qRateDeam)][o], lwd=2)
Pan-can
tt0 <- branchDeam/cbind(finalPloidy, effGenome) / cbind(nClones-1, 1)/3 # 3Gb Haploid genome
tt0[is.infinite(tt0)|is.nan(tt0)] <- 0
m <- sapply(rateDeam, function(r){m <- median(r[TiN[sample2donor[names(r)]] <= 0.01 & ! is.na(TiN[sample2donor[names(r)]])],na.rm=TRUE)})
s <- rowSums(tt0)#/m[as.character(donor2type[sample2donor[names(finalSnv)]])]
s[remove] <- NA
t <- donor2type[sample2donor[names(finalSnv)]]
x <- age[sample2donor[names(finalSnv)]]
plot(x,s, bg=tissueColors[t], pch=21, ylim=c(0,1000), col=tissueBorder[t], cex=tissueCex[t]*2/3, lwd=0.25, xlab="Age", ylab="SNVs/Gb")
p <- predict(loess(s~x), newdata=sort(x, na.last=NA), se=TRUE)
r <- function(x) c(x, rev(x))
polygon(r(sort(x, na.last=NA)), c(p$fit+2*p$se, rev(p$fit-2*p$se)), col="#00000044", border=NA)
lines(sort(x, na.last=NA),p$fit)
#s <- 12/8; dev.copy2pdf(file="timeSubcloneAgePancan.pdf", width=2*s, height=2*s, pointsize=8*s)
Positive intercept?
a <- simplify2array(cc[!names(cc) %in% c("Myeloid-AML","Bone-Epith")])
all(a[1,1,] + 2*a[1,2,]>0 )
## [1] TRUE
Positive slope?
all(na.omit(a[2,1,] + 2*a[2,2,]>0))
## [1] TRUE
plot(a[1,1,], a[2,1,], col=tissueColors[dimnames(a)[[3]]], pch=NA, xlab="Offset", ylab="SNVs/Gb/yr")
segments(a[1,1,], a[2,1,] - a[2,2,],a[1,1,], a[2,1,]+a[2,2,], col=tissueLines[dimnames(a)[[3]]], pch=19)
segments(a[1,1,]-a[1,2,], a[2,1,], a[1,1,]+a[1,2,], a[2,1,], col=tissueLines[dimnames(a)[[3]]], pch=19)
points(a[1,1,], a[2,1,], pch=21, bg=tissueColors[dimnames(a)[[3]]], col=tissueLines[dimnames(a)[[3]]])
abline(h=0, lty=3)
abline(v=0, lty=3)
Fraction of mutations due to linear accumulation
par(mar=c(6,3,1,1))
ma <- sapply(split(age, donor2type[names(age)]), median, na.rm=TRUE)
fm <- pmax(a[2,7,],0)*ma[dimnames(a)[[3]]]/(pmax(0,a[2,7,])*ma[dimnames(a)[[3]]] + pmax(0,a[1,7,]))*100
o <- order(fm)
fmq <- sapply(names(fm), function(n){
aa <- mvtnorm::rmvnorm(10000, mean=a[,1,n], sigma=a[,5:6,n] )
aa <- aa[aa[,1]>=0 & aa[,2]>=0,]
quantile(pmax(aa[,2],0)*ma[n]/(pmax(0,aa[,2])*ma[n] + pmax(0,aa[,1])), c(0.025, 0.975))
}) *100
barplot(fm[o], col=tissueColors[dimnames(a)[[3]]][o], border=tissueLines[dimnames(a)[[3]]][o], las=2,names.arg=rep("",length(fm)) , ylab="Age-attributed mutations [%]") -> b
mg14::rotatedLabel(b, labels=names(fm[o]))
segments(b, fm[o], b, fmq[2,o], col=tissueLines[dimnames(a)[[3]]][o], lwd=2)
segments(b, fmq[1,o], b, fm[o], col=tissueBorder[dimnames(a)[[3]]][o], lwd=2)
abline(h=min(fmq[2,]))
abline(h=max(fmq[1,]))
Prepare data
library(rstan)
## Loading required package: ggplot2
## Loading required package: StanHeaders
## rstan (Version 2.17.3, GitRev: 2e1f913d3ca3)
## For execution on a local, multicore CPU with excess RAM we recommend calling
## options(mc.cores = parallel::detectCores()).
## To avoid recompilation of unchanged Stan programs, we recommend calling
## rstan_options(auto_write = TRUE)
y <- Reduce("c",rateDeam)
y <- y[!names(y) %in% remove]
x <- age[sample2donor[names(y)]]
y <- y*x
t <- donor2type[sample2donor[names(y)]]
d <- data.frame(x,y,t)
df <- d
df <- df[rowSums(is.na(df))==0,]
tt <- model.matrix(~droplevels(t)-1, data=df)
data <- list(n = nrow(df),
p = ncol(tt),
y = df$y,
x = tt * df$x,
t = tt
)
Model definition for stan
data {
int<lower=0> n; // numbr of observations
int<lower=0> p; // number of types
vector<lower=0>[n] y; // mutations
matrix[n,p] x; // age
matrix[n,p] t; // tumour type
}
parameters {
real<lower=0> sigma; // const. variance
real<lower=0> tau; // time-dep variance
real<lower=0> alpha; // alpha for slope
real<lower=0> beta; // beta for slope
real<lower=0> gamma;
real<lower=0> delta;
vector<lower=0>[p] offset;
vector<lower=0>[p] slope;
}
transformed parameters {
vector[n] mu;
vector[n] nu;
vector[p] ones;
ones = rep_vector(1, p);
mu = x * slope + t * offset;
nu = sqrt( square(x * ones) * tau^2 + sigma^2);
}
model {
slope ~ gamma(alpha, beta);
offset ~ gamma(gamma, delta);
y ~ normal(mu, nu);
}
Fit model
fit <- stan(
file = "PCAWG-rates.stan", # Stan program
data = data, # named list of data
chains = 1, # number of Markov chains
warmup = 1000, # number of warmup iterations per chain
iter = 2000, # total number of iterations per chain
cores = 1, # number of cores
refresh = 1000, # show progress every 'refresh' iterations
open_progress=FALSE,
seed=42
)
## In file included from /homes/mg14/R/x86_64-redhat-linux-gnu-library/3.3/BH/include/boost/config.hpp:39:0,
## from /homes/mg14/R/x86_64-redhat-linux-gnu-library/3.3/BH/include/boost/math/tools/config.hpp:13,
## from /homes/mg14/R/x86_64-redhat-linux-gnu-library/3.3/StanHeaders/include/stan/math/rev/core/var.hpp:7,
## from /homes/mg14/R/x86_64-redhat-linux-gnu-library/3.3/StanHeaders/include/stan/math/rev/core/gevv_vvv_vari.hpp:5,
## from /homes/mg14/R/x86_64-redhat-linux-gnu-library/3.3/StanHeaders/include/stan/math/rev/core.hpp:12,
## from /homes/mg14/R/x86_64-redhat-linux-gnu-library/3.3/StanHeaders/include/stan/math/rev/mat.hpp:4,
## from /homes/mg14/R/x86_64-redhat-linux-gnu-library/3.3/StanHeaders/include/stan/math.hpp:4,
## from /homes/mg14/R/x86_64-redhat-linux-gnu-library/3.3/StanHeaders/include/src/stan/model/model_header.hpp:4,
## from file87c5335a6124.cpp:8:
## /homes/mg14/R/x86_64-redhat-linux-gnu-library/3.3/BH/include/boost/config/compiler/gcc.hpp:186:0: warning: "BOOST_NO_CXX11_RVALUE_REFERENCES" redefined [enabled by default]
## # define BOOST_NO_CXX11_RVALUE_REFERENCES
## ^
## <command-line>:0:0: note: this is the location of the previous definition
## In file included from /homes/mg14/R/x86_64-redhat-linux-gnu-library/3.3/StanHeaders/include/stan/math/rev/core.hpp:44:0,
## from /homes/mg14/R/x86_64-redhat-linux-gnu-library/3.3/StanHeaders/include/stan/math/rev/mat.hpp:4,
## from /homes/mg14/R/x86_64-redhat-linux-gnu-library/3.3/StanHeaders/include/stan/math.hpp:4,
## from /homes/mg14/R/x86_64-redhat-linux-gnu-library/3.3/StanHeaders/include/src/stan/model/model_header.hpp:4,
## from file87c5335a6124.cpp:8:
## /homes/mg14/R/x86_64-redhat-linux-gnu-library/3.3/StanHeaders/include/stan/math/rev/core/set_zero_all_adjoints.hpp:14:17: warning: ‘void stan::math::set_zero_all_adjoints()’ defined but not used [-Wunused-function]
## static void set_zero_all_adjoints() {
## ^
##
## SAMPLING FOR MODEL 'PCAWG-rates' NOW (CHAIN 1).
##
## Gradient evaluation took 0.01 seconds
## 1000 transitions using 10 leapfrog steps per transition would take 100 seconds.
## Adjust your expectations accordingly!
##
##
## Iteration: 1 / 2000 [ 0%] (Warmup)
## Iteration: 1000 / 2000 [ 50%] (Warmup)
## Iteration: 1001 / 2000 [ 50%] (Sampling)
## Iteration: 2000 / 2000 [100%] (Sampling)
##
## Elapsed Time: 359.79 seconds (Warm-up)
## 326.67 seconds (Sampling)
## 686.46 seconds (Total)
## Warning: There were 6 divergent transitions after warmup. Increasing adapt_delta above 0.8 may help. See
## http://mc-stan.org/misc/warnings.html#divergent-transitions-after-warmup
## Warning: Examine the pairs() plot to diagnose sampling problems
Collect parameters
s <- summary(fit, pars=c("offset","slope"))$summary
ab <- array(s, dim=c(ncol(tt),2,10), dimnames=list(levels(droplevels(t)), c("a","b"), colnames(s)))
Summary plot
plot(x,y, bg=tissueColors[t], pch=21, ylim=c(0,1000), col=tissueBorder[t], cex=tissueCex[t]*2/3, lwd=0.25, xlab="Age", ylab="SNVs/Gb")
for(i in 1:nrow(ab))
abline(ab[i,1,"50%"], ab[i,2,"50%"], col=tissueLines[levels(droplevels(t))[i]], lty=tissueLty[levels(droplevels(t))[i]])
Rate and offset
plot(ab[,1,"50%"], ab[,2,"50%"], col=tissueColors[dimnames(ab)[[1]]], pch=NA, xlab="Offset", ylab="SNVs/Gb/yr", xlim=range(ab[,1,c("2.5%","97.5%")]), ylim=range(ab[,2,c("2.5%","97.5%")]))
segments(ab[,1,"50%"], ab[,2,"2.5%"],ab[,1,"50%"], ab[,2,"97.5%"], col=tissueLines[dimnames(ab)[[1]]], pch=19)
segments(ab[,1,"2.5%"], ab[,2,"50%"],ab[,1,"97.5%"], ab[,2,"50%"], col=tissueLines[dimnames(ab)[[1]]], pch=19)
points(ab[,1,"50%"], ab[,2,"50%"], pch=21, bg=tissueColors[dimnames(ab)[[1]]], col=tissueLines[dimnames(ab)[[1]]])
abline(h=0, lty=3)
abline(v=0, lty=3)
a <- extract(fit, pars="offset")$offset
b <- extract(fit, pars="slope")$slope
colnames(a) <- colnames(b) <- levels(droplevels(t))
Overview
par(mfrow=c(6,6), mar=c(3,3,2,1),mgp=c(2,.5,0), tcl=-0.25,cex=1, bty="L", xpd=FALSE, las=1, xpd=FALSE)
d <- droplevels(t)
for(n in levels(d)){
i <- d==n
yy <- y[i]
xx <- x[i]
m <- median(yy/xx, na.rm=TRUE)
try({
plot(xx, yy, bg=tissueColors[n], col=tissueBorder[n], pch=21, log='', xlab="Age at diagnosis", ylab="SNVs/Gb", main=n, ylim=c(0,pmin(1000,max(yy, na.rm=TRUE))), xlim=c(0,max(x, na.rm=TRUE)), cex.main=1)
#points(xx, yy, bg=tissueColors[n], col=ifelse(w,tissueBorder[n], tissueColors[n]), pch=ifelse(w,21,4))
abline(0, m, lty=3)
x0 <- seq(0,100,1)
p <- apply(sapply(x0, function(x) a[,n] + b[,n]*x), 2, quantile, c(0.025,0.975), na.rm=TRUE)
polygon(c(x0,rev(x0)), c(p["2.5%",], rev(p["97.5%",])), border=tissueBorder[n], col=paste0(tissueColors[n],"44"))
})
}
Fraction of mutations due to linear accumulation
q <- sapply(colnames(a), function(n){
w <- which(t==n & !is.na(y))
f <- sapply(w, function(j) x[j] * b[,n] / (a[,n] + x[j] * b[,n]))
quantile(rowMeans(f), c(0.025, 0.25, .5,.75,.975))
})*100
qPanCan=quantile(rowMeans(do.call("cbind",sapply(colnames(a), function(n){
w <- which(d==n & !is.na(y))
f <- sapply(w, function(j) x[j] * b[,n] / (a[,n] + x[j] * b[,n]))
}))),
c(0.025, 0.25, .5,.75,.975))*100
Plot
par(mar=c(6,3,1,1))
o <- order(q["50%",])
barplot(q["50%",o], col=tissueColors[colnames(q)][o], border=tissueLines[colnames(q)][o], las=2,names.arg=rep("",length(q["50%",])) , ylab="Age-attributed mutations [%]", ylim=c(0,100)) -> b
mg14::rotatedLabel(b, labels=names(q["50%",o]))
segments(b, q["50%",][o], b, q["97.5%",o], col=tissueLines[colnames(q)][o], lwd=2)
segments(b, q["2.5%",o], b, q["50%",][o], col=tissueBorder[colnames(q)][o], lwd=2)
abline(h=min(q["97.5%",]), lty=3)
abline(h=max(q["2.5%",]), lty=3)
#abline(h=qPanCan["50%"], lty=4)
Qualitative behaviour, simulating 0-15yrs with 5x acceleration
set.seed(42)
x <- df$x
a <- runif(length(x), pmax(0.5, 1-15/x), 1) #
r <- rgamma(length(x), 10, 10)
y <- rpois(length(x), (a + (1-a)*5) * r * x * 6 * 0.2)/6
y[x < 40] <- NA
plot(x,y, ylim=c(0,max(y, na.rm=TRUE)), xlab="Age", ylab="SNVs/Gb", pch=21, bg="grey", lwd=0.5)
f <- lm(y~x)
summary(f)
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -16.580 -5.146 -0.878 4.171 31.728
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.31347 1.01438 5.238 1.82e-07 ***
## x 0.21375 0.01583 13.504 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7.311 on 1696 degrees of freedom
## (280 observations deleted due to missingness)
## Multiple R-squared: 0.09708, Adjusted R-squared: 0.09655
## F-statistic: 182.4 on 1 and 1696 DF, p-value: < 2.2e-16
c <- coef(f)
abline(c)
mean(c[1] / (c[1]+ x*c[2]), na.rm=TRUE)
## [1] 0.3297523
Acceleration values to simulate
accel <- c(1,2.5,5,7.5,10)
names(accel) <- paste0(accel, "x")
The actual timing
set.seed(42)
d <- droplevels(donor2type[sample2donor[names(finalSnv)]])
computeSubclonesTimeAbs <- function(l, b) {
i <- d==l
tt0 <- b[i,]/cbind(finalPloidy[i], effGenome[i]) #/ cbind(nClones[i]-1, 1)
resB <- sapply(1:1000, function(foo){ ## Assess the impact of Poisson fluctuations on numbers
tt <- matrix(rpois(length(tt0), lambda=tt0), ncol=ncol(tt0))
res <- sapply(accel, function(a) tt[,1]/a/rowSums(tt/rep(c(a,1), each=nrow(tt)))) * age[sample2donor[names(finalSnv)[i]]]
colnames(res) <- paste0(accel, "x")
#res[res==0] <- NA
res}, simplify='array')
res <- sapply(accel, function(a) tt0[,1]/a/rowSums(tt0/rep(c(a,1), each=nrow(tt0)))) * age[sample2donor[names(finalSnv)[i]]]
colnames(res) <- paste0(accel, "x")
resCI <- apply(resB,1:2, quantile, c(0.1,0.9), na.rm=TRUE)
arr <- abind::abind(res, resCI, along=1)
rownames(arr)[1] <- "hat"
arr <- aperm(arr, c(2,1,3))
tt0[is.infinite(tt0)|is.nan(tt0)] <- 0
r <- which(rowSums(b[i,]) < 50 ) ## Exclude samples with less than 50 subs
arr[r,,] <- NA
return(arr)
}
subclonesTimeAbs <- mclapply(typesSubclones, computeSubclonesTimeAbs, b=branchDeam)
subclonesTimeAbsLinear <- mclapply(typesSubclones, computeSubclonesTimeAbs, b=branchDeamLinear)
names(subclonesTimeAbsLinear) <- names(subclonesTimeAbs) <- typesSubclones
guessAccel <- sapply(subclonesTimeAbs, function(x) "5x")
guessAccel["Ovary-AdenoCa"] <- guessAccel["Liver-HCC"] <- "7.5x"
guessAccel[grep('CNS', names(guessAccel))] <- "2.5x"
Plot
u <- setdiff(names(finalSnv)[uniqueSamples], remove)
par( mar=c(7,3,1,1), mgp=c(2,.5,0), tcl=0.25,cex=1, bty="L", xpd=FALSE, las=1)
qSubclone <- sapply(subclonesTimeAbs, function(x) apply(x[,"hat",][rownames(x)%in%u,,drop=FALSE], 2, quantile, c(0.05,0.25,0.5,0.75,0.95), na.rm=TRUE), simplify='array')
a <- "5x"
subclonesTimeAbsType <- sapply(names(subclonesTimeAbs), function(n) {x <- subclonesTimeAbs[[n]]; x[,,guessAccel[n]][setdiff(rownames(x),remove), 1:3, drop=FALSE]})
m <- diag(qSubclone["50%",guessAccel[dimnames(qSubclone)[[3]]],])#t[1,3,]
names(m) <- dimnames(qSubclone)[[3]]
m[sapply(subclonesTimeAbsType, function(x) sum(!is.na(x[,1]))) < 5] <- NA
o <- order(m, na.last=NA)
plot(NA,NA, xlim=c(0.5,length(m[o])), ylab="Years before diagnosis", xlab="", xaxt="n", yaxs="i", ylim=c(0,30))
abline(h=seq(10,20,10), col="#DDDDDD", lty=3)
x <- seq_along(m[o])
mg14::rotatedLabel(x, labels=names(sort(m)))
for(i in seq_along(o))try({
n <- names(m)[o[i]]
f <- function(x) x/max(abs(x))
a <- guessAccel[n]
bwd <- 0.8/2
j <- if(length(na.omit(subclonesTimeAbsType[[o[i]]][,"hat"]))>1) f(mg14::violinJitter(na.omit(subclonesTimeAbsType[[o[i]]][,"hat"]))$y)/4 + i else i
tpy <- 2
segments(j, na.omit(subclonesTimeAbsType[[o[i]]][,"90%"]), j, na.omit(subclonesTimeAbsType[[o[i]]][,"10%"]), col=mg14::colTrans(tissueLines[n],tpy))
points(j, na.omit(subclonesTimeAbsType[[o[i]]][,"hat"]), pch=21, col=mg14::colTrans(tissueBorder[n], tpy), bg=mg14::colTrans(tissueColors[n],tpy),
cex=tissueCex[n]*2/3, lwd=1)
rect(i-bwd,qSubclone["25%",a,n],i+bwd,qSubclone["75%",a,n], border=tissueLines[n], col=paste(tissueColors[n],"44", sep=""))
segments(i-bwd,qSubclone["50%",a,n],i+bwd,qSubclone["50%",a,n],col=tissueLines[n], lwd=2)
segments(i,qSubclone["75%",a,n],i,qSubclone["95%",a,n],col=tissueLines[n], lwd=1.5)
segments(i,qSubclone["5%",a,n],i,qSubclone["25%",a,n],col=tissueLines[n], lwd=1.5)
f <- function(x) x/max(abs(x))
})
#par(xpd=TRUE)
#s <- 12/8
#dev.copy2pdf(file="realTimeSubclone.pdf", width=6*s, height=3.5*3/5*s, pointsize=8*s)
sapply(subclonesTimeAbs, nrow)
## Biliary-AdenoCa Bladder-TCC Bone-Benign Bone-Epith Bone-Osteosarc Breast-AdenoCa
## 35 23 16 10 38 198
## Cervix-SCC CNS-GBM CNS-Medullo CNS-Oligo CNS-PiloAstro ColoRect-AdenoCa
## 18 41 146 18 89 60
## Eso-AdenoCa Head-SCC Kidney-CCRCC Kidney-ChRCC Kidney-PapRCC Liver-HCC
## 98 57 111 45 33 326
## Lung-AdenoCa Lung-SCC Lymph-BNHL Lymph-CLL Myeloid-AML Myeloid-MPN
## 38 48 107 95 11 55
## Ovary-AdenoCa Panc-AdenoCa Panc-Endocrine Prost-AdenoCa Skin-Melanoma SoftTissue-Leiomyo
## 113 241 85 286 107 15
## SoftTissue-Liposarc Stomach-AdenoCa Thy-AdenoCa Uterus-AdenoCa
## 19 75 48 51
Comparison of branching v linear
subclonesTimeAbsTypeLinear <- sapply(names(subclonesTimeAbsLinear), function(n) {x <- subclonesTimeAbsLinear[[n]]; x[,,guessAccel[n]][setdiff(rownames(x),remove), 1:3, drop=FALSE]})
qSubcloneLinear <- sapply(subclonesTimeAbsLinear, function(x) apply(x[,"hat",][rownames(x)%in%u,,drop=FALSE], 2, quantile, c(0.05,0.25,0.5,0.75,0.95), na.rm=TRUE), simplify='array')
n <- diag(qSubcloneLinear["50%",guessAccel[dimnames(qSubcloneLinear)[[3]]],])#t[1,3,]
par( mar=c(5,3,3,10), mgp=c(2,.5,0), tcl=-0.25,cex=1, bty="n", xpd=FALSE, las=1)
plot(c(rep(1, length(m)), rep(2, each=length(n))), c(m,n), bg=tissueColors[c(names(m), names(n))], pch=21, cex=1, xaxt="n", ylab="Years after MRCA", xlab="", xlim=c(0.5,2.5), ylim=c(0, max(n, na.rm=TRUE)))
segments(rep(1, each=length(m)), m, rep(2, each=length(n)), n,col=tissueLines[names(m)], lty= ifelse(sapply(subclonesTimeAbsType, nrow) <= 5, 3, tissueLty[names(m)]))
o <- order(n, na.last=NA)
y0 <- n[o]
y1 <- mg14:::mindist(n[o], diff(par('usr')[3:4])/30)
par(xpd=NA)
mtext(names(m)[o], at=y1, side=4 )
segments(2.1,y0,2.2,y0)
segments(2.2,y0,2.3,y1)
segments(2.3,y1,2.4,y1)
mg14::rotatedLabel(1:2, labels=c("Branching","Linear"))
Numbers per decade
yy <- do.call("rbind",subclonesTimeAbsType)
yy <- yy[setdiff(rownames(yy), remove),"hat"]
table(cut(yy, seq(0,60,10)))
##
## (0,10] (10,20] (20,30] (30,40] (40,50] (50,60]
## 1863 27 4 2 1 0
Calculate relative timing estimates based on deaminations.
computeWgdParamDeam <- function(vcf, bb, clusters, purity){
# 1. Find segments compatible with WGD
min.dist <- 0.05
m <- findMainCluster(bb)
l <- pmin(bb$time.lo, bb$time - min.dist)
u <- pmax(bb$time.up, bb$time + min.dist)
o <- which(l <= m & u >= m)
# 2. Find deaminations in compatible segments
w <- which(info(vcf)$MajCN==2 & sapply(info(vcf)$CNID, length)==1 & isDeamination(vcf) & vcf %over% bb[o])
if(donor2type[sample2donor[meta(header(vcf))$META["ID",]]]=="Skin-Melanoma")
w <- intersect(w, which(isDeaminationNoUV(vcf)))
v <- vcf[w]
if(nrow(v)<=100) return(NULL) # At least 100 SNVs
seqnames(rowRanges(v)) <- factor(3-info(v)$MinCN, levels=seqlevels(v))
v <- sort(v)
# 3. Merged CN segments
b <- GRanges(1:3, IRanges(rep(1,3),rep(max(end(v)),3)), copy_number=4:2, major_cn=2, minor_cn=2:0, clonal_frequency=as.numeric(purity))
# 4. Calculate times
l <- computeMutCn(v, b, clusters, purity, isWgd=TRUE, n.boot=200, rho=0.01, xmin=3)
b$n.snv_mnv <- l$n <- table(factor(info(v)$MinCN, levels=2:0))
l$time <- bbToTime(b, l$P)
return(l)
}
Takes ~1h.
wgdParamDeam <- mclapply(names(finalSnv)[isWgd], function(ID){
try(computeWgdParamDeam(finalSnv[[ID]], finalBB[[ID]], clusters=finalClusters[[ID]], purity=finalPurity[ID]))
})
names(wgdParamDeam) <- names(finalSnv)[isWgd]
Samples with insufficient data
void <- sapply(wgdParamDeam, function(x) is.null(x) | class(x)=="try-error")
Some checks
t <- sapply(wgdParamDeam[!void], function(x) {r <- as.matrix(x$time[,2:4]); rownames(r) <- x$time[,1];r}, simplify='array')
pairs(t(t[,"time",]))
Calculate acceleration-adjusted times
wgdTimeDeamAcc <- simplify2array(mclapply(names(wgdParamDeam[!void]), function(n) {
x <- wgdParamDeam[!void][[n]]
T.clonal <- as.matrix(x$time[,2:4]) # Time of WGD as fraction of clonal
n.subclonal <- aggregate(x$D[,"pSub"], list(x$D[,"CNF"]), sum)
m <- match(n.subclonal$Group.1, finalClusters[[n]]$proportion)
p.subclonal <- x$power.c[m] # Power of subclones
b.subclonal <- n.subclonal$x %*% (n.subclonal$Group.1 / p.subclonal) / max(n.subclonal$Group.1) # Subclonal branch, power adjusted & 1/f-scaled
b.clonal <- sum(1-x$D[,"pSub"])/p.subclonal['1'] # Clonal branch (trunk), power adjusted & 1/f-scaled
f.subclonal <- b.subclonal / (b.subclonal + b.clonal)
G.clonal <- sum (1-x$D$pSub)/sum((1-x$D$pSub)*x$D$MutCN/(x$D$MajCN + x$D$MinCN)) # Effective ploidy clonal, adjusted for timing
G.subclonal <- sum(x$D$pSub*(x$D$MajCN + x$D$MinCN))/ sum (x$D$pSub) # Final ploidy
if(is.nan(G.subclonal)) G.subclonal <- mean(x$D$MajCN + x$D$MinCN)
ag <- age[sample2donor[names(finalBB)[isWgd][!void][j]]]
tmin <- max(0.5, 1-15/ag) # 15yrs or 50%, whatever smaller (median ~ 0.75 mutation time)
if(is.na(tmin)) tmin <- 0.8
ta=seq(tmin,1,l=20)
.correctAccel <- function(T.clonal, f.subclonal, G.clonal, G.subclonal, ta, a){ # Helper function to correct accel a at clonal time ta
t1 <- T.clonal + (1-T.clonal) *(a-1)/a*ta #acc before dup
t2 <- T.clonal * (ta + a*(1-ta)) ## after
T.clonal.adj <- pmin(t1, t2) # as fraction of clonal
a.clonal <- ta + (1-ta)*a # effective rate, avg over clonal
T.subclonal.abs <- f.subclonal / G.subclonal / a
T.clonal.abs <- (1-f.subclonal) / G.clonal/ a.clonal
T.clonal.abs <- T.clonal.abs / (T.clonal.abs + T.subclonal.abs) # as fraction of all mutations
return(c(T.WGD=T.clonal.adj * T.clonal.abs, T.MRCA=T.clonal.abs))
}
.correctAccelRand <- function(T.clonal, f.subclonal, G.clonal, G.subclonal, ta=seq(0.8,1,0.01), a=seq(1,10,1)){ # Helper to calculate range of accel a and times
sapply(ta, function(taa) sapply(a, function(aa) .correctAccel(T.clonal, f.subclonal, G.clonal, G.subclonal, taa, aa)), simplify='array')
}
res <- apply(T.clonal, 1:2, .correctAccelRand, f.subclonal, G.clonal, G.subclonal, a=accel, ta=seq(tmin,1,l=20))
dim(res) <- c(2, length(accel), length(ta), dim(res)[-1])
return(res)
}))
dimnames(wgdTimeDeamAcc)[1:2] <- list(c("T.WGD","T.MRCA"), names(accel))
dimnames(wgdTimeDeamAcc)[[5]] <- colnames(wgdParamDeam[[1]]$time)[2:4]
dimnames(wgdTimeDeamAcc)[[4]] <- levels(finalBB[[1]]$type)[c(3,1,2)]
dimnames(wgdTimeDeamAcc)[[6]] <- names(wgdParamDeam[!void])
n <- dimnames(wgdTimeDeamAcc)[[6]]
d <- droplevels(donor2type[sample2donor[n]])
s <- setdiff(levels(d), c(typeNa, names(which(table(d)<3))))
Calculate real time by scaling with age at diagnosis
f <- function(n, mu, a, b){ ## asymmetric normal to interpolate CIs of the timing estimates
r <- rnorm(n, sd=a)
w <- which(r>0)
r[w] <- r[w]*(b/a)[w]
return(r + mu)
}
wgdTimeAbs <- sapply(s, function(l) {
set.seed(42)
i <- d==l & ! n %in% c(rownames(purityPloidy)[purityPloidy$wgd_uncertain])
## absolute time by multiplying with age at diagnosis
absTimeSeg <- aperm((1-wgdTimeDeamAcc["T.WGD",,,,,i]) * rep(age[sample2donor[n]][i], each = prod(dim(wgdTimeDeamAcc)[c(2,3,4,5)])))
w <- t(sapply(wgdParamDeam[n[i]], `[[`, "n")) #number of SNV as weights
## remove NA due to zero mutations
for(c in 1:3)
absTimeSeg[,,c,,][is.na(absTimeSeg[,,c,,]) & w[,c]==0] <- 0
## weighted average over 2+0, 2+1 and 2+2 segments
absTime <- (absTimeSeg[,,1,,] * w[,1] + absTimeSeg[,,2,,] * w[,2] + absTimeSeg[,,3,,] * w[,3]) / rowSums(w)
rownames(absTime) <- n[i]
## Median over acceleration onset
absTimeMed <- apply(absTime, c(1,2,4), median, na.rm=TRUE)
colnames(absTimeMed) <- c("hat","up","lo")
## Simulate distribution sampling from timing onset and mutation time CI
ts <- sapply(1:1000, function(foo) {ax <- sample(1:20,1); matrix(f(length(absTime[,"time",ax,]),a=abs(absTime[,"time",ax,] - absTime[,"time.up",ax,])/2, b=abs(absTime[,"time.lo",ax,]-absTime[,"time",ax,])/2, mu=absTime[,"time",ax,]), nrow=dim(absTime)[1])}, simplify='array')
me <- apply(ts, 1:2, quantile, c(0.1, 0.8), na.rm=TRUE) # 80% CIs
absTimeMed[,"lo",] <- (me[1,,])
absTimeMed[,"up",] <- (me[2,,])
absTimeMed[,c(1,3,2),]
}, simplify=FALSE)
Boxplots of WGD per cancer type
par( mar=c(7,3,1,1), mgp=c(2,.5,0), tcl=0.25,cex=1, bty="L", xpd=FALSE, las=1)
u <- setdiff(names(finalSnv)[uniqueSamples], remove)
qWgd <- sapply(wgdTimeAbs, function(x) apply(x[rownames(x) %in% u,"hat",], 2, quantile, c(0.05,0.25,0.5,0.75,0.95), na.rm=TRUE), simplify='array')
nWgd <- sapply(wgdTimeAbs, function(x) sum(x[rownames(x) %in% u,"hat","1x"]!=0, na.rm=TRUE))
wgdTimeAbsType <- sapply(names(wgdTimeAbs), function(n) {x <- wgdTimeAbs[[n]]; x[,,guessAccel[n]][setdiff(rownames(x),remove), 1:3, drop=FALSE]})
m <- diag(qWgd["75%",guessAccel[dimnames(qWgd)[[3]]],])#t[1,3,]
names(m) <- dimnames(qWgd)[[3]]
o <- order(m, na.last=NA)
x <- seq_along(m[o])
plot(NA,NA, xlim=c(0.5,length(m[o])), ylim=c(0,max(do.call('rbind',wgdTimeAbsType)[,1], na.rm=TRUE)+5), ylab="Years before diagnosis", xlab="", xaxt="n", yaxs="i")
abline(h=seq(10,60,10), col="#DDDDDD", lty=3)
mg14::rotatedLabel(x, labels=names(sort(m)))
for(i in seq_along(o)){
n <- names(m)[o[i]]
f <- function(x) x/max(abs(x))
a <- guessAccel[n]
j <- f(mg14::violinJitter(na.omit(wgdTimeAbsType[[o[i]]][,"hat"]))$y)/4 + i #rank(na.omit(tWgdByType[[o[i]]][,"hat"]))/2/length(na.omit(tWgdByType[[o[i]]][,"hat"]))-0.25+i #
tpy <- if(grepl("Skin|Lung", n)) 4 else 2
segments(j, na.omit(wgdTimeAbsType[[o[i]]][,"up"]), j, na.omit(wgdTimeAbsType[[o[i]]][,"lo"]), col=mg14::colTrans(tissueLines[n],tpy), lty=tissueLty[n])
points(j, na.omit(wgdTimeAbsType[[o[i]]][,"hat"]), pch=21, col=mg14::colTrans(tissueBorder[n], tpy), bg=mg14::colTrans(tissueColors[n],tpy),
cex=tissueCex[n]*2/3, lwd=1)
bwd <- 0.8/2
rect(i-bwd,qWgd["25%",a,n],i+bwd,qWgd["75%",a,n], border=tissueLines[n], col=paste0(tissueColors[n],"44"))
segments(i-bwd,qWgd["50%",a,n],i+bwd,qWgd["50%",a,n],col=tissueLines[n], lwd=2)
segments(i,qWgd["75%",a,n],i,qWgd["95%",a,n],col=tissueLines[n], lwd=1.5)
segments(i,qWgd["5%",a,n],i,qWgd["25%",a,n],col=tissueLines[n], lwd=1.5)
}
par(xpd=TRUE)
#s <- 12/8
#dev.copy2pdf(file="realTimeWgd.pdf", width=4*s, height=3.5*s, pointsize=8*s)
Plot extremely early samples
t <- do.call("rbind", wgdTimeAbsType)
o <- order(t[,"hat"], na.last=NA)
for(n in rownames(t)[tail(o, 20)])
plotSample(n, title=paste0(sub("-.+","",n),", ", donor2type[sample2donor[n]], ", ",round(t[n,"hat"]),"yr"))
Numbers per decade
yy <- do.call("rbind",wgdTimeAbsType)
yy <- yy[setdiff(rownames(yy), remove),"hat"]
table(cut(yy, seq(0,60,10)))
##
## (0,10] (10,20] (20,30] (30,40] (40,50] (50,60]
## 389 86 47 20 11 9
WGD time v age at diagnosis
par(mfrow=c(6,6), mar=c(3,3,2,1),mgp=c(2,.5,0), tcl=-0.25,cex=1, bty="L", xpd=FALSE, las=1)
for(i in seq_along(wgdTimeAbsType)){
n <- names(wgdTimeAbsType)[i]
y <- wgdTimeAbsType[[n]][,"hat"]
x <- age[sample2donor[names(y)]]
plot(x,x-y, pch=NA, bg=tissueColors[n], col=tissueBorder[n], xlab="Age [yr]", ylab="WGD [yr]", cex=tissueCex[n], xlim=c(0,90), ylim=c(0,90))
segments(x, y0=x-wgdTimeAbsType[[n]][,"up"],y1=x-wgdTimeAbsType[[n]][,"lo"],col=tissueLines[n])
points(x,x-y, pch=21, bg=tissueColors[n], col=tissueBorder[n], cex=tissueCex[n])
# d <- density(na.omit(x), bw="SJ", from=0)
# lines(d$x,d$y*100,col=tissueLines[n], lty=tissueLty[n])
# d <- density(na.omit(x-y), bw="SJ", from=0)
# lines(d$y*100, d$x,col=tissueLines[n], lty=tissueLty[n])
rug(x, col=tissueLines[n],)
rug(x-y, side=2, col=tissueLines[n])
title(main=n, line=0, font.main=1, cex.main=1)
abline(0,1, lty=3)
}
Scatter
t <- sapply(wgdParamDeam[!void], function(x) x$time$time)
plot(timingInfo[colnames(t),'timeCoamp'],
colMeans(t),
cex=sqrt(nSub[colnames(t)]/10000),
pch=21,bg=tissueColors[donor2type[sample2donor[colnames(t)]]],
col=tissueBorder[donor2type[sample2donor[colnames(t)]]],
xlab="time [all mutations]",
ylab="time [CpG>TpG]")
abline(0,1, lty=3)
Box
par(mar=c(6,4,1,1), xaxs='i')
boxplot(timingInfo[colnames(t),'timeCoamp'] - colMeans(t) ~ droplevels(donor2type[sample2donor[colnames(t)]]),
col=tissueColors[levels(droplevels(donor2type[sample2donor[colnames(t)]]))],
na.rm=TRUE, las=2,
lty=1,
staplewex=0,
pch=16,
cex=0.8,
ylab='time [all] - time [CpG>TpG]',
names=NA
)
mg14::rotatedLabel(labels=levels(droplevels(donor2type[sample2donor[colnames(t)]])))
abline(h=0, lty=3)
Number of deaminatinos in 2:2 regions
nDeam22 <- sapply(wgdParamDeam[!void], function(x) if(!is.null(x$n)) as.numeric(x$n[1]) else NA)
w22 <- sapply(finalBB[isWgd][!void], function(bb) {
w <- bb$major_cn==2 & bb$minor_cn==2 & !duplicated(bb)
sum(as.numeric(width(bb)[w]), na.rm=TRUE)})
nDeam22 <- nDeam22/w22*1e9
Fraction of deam on 1 and 2 copies
d <- nDeam22 * t(sapply(wgdParamDeam[!void], function(x) if(!is.null(x$P)) x$P[[1]][1:2,"P.m.sX"] else c(NA,NA)))
d[rownames(d) %in% remove] <- NA
Unadjusted time (inc. of subclonal mutations)
t0 <- colMeans(wgdTimeDeamAcc["T.WGD","1x",1,,"time",],na.rm=TRUE)
names(t0) <- dimnames(wgdTimeDeamAcc)[[6]]
Plot time v early and total number of mutations
y <- d[names(t0),]/6
x <- t0
t <- donor2type[sample2donor[names(t0)]]
plot(x,y[,2], bg=tissueColors[t], pch=21, col=tissueBorder[t], cex=tissueCex[t]*1, lwd=0.5, xlab="Time", ylab="Early SNVs/Gb", log='')
p <- predict(loess(y[,2]~x, span=1), newdata=sort(x, na.last=NA), se=TRUE)
r <- function(x) c(x, rev(x))
polygon(r(sort(x, na.last=NA)), c(p$fit+2*p$se, rev(p$fit-2*p$se)), col="#00000044", border=NA)
lines(sort(x, na.last=NA),p$fit)
plot(x,y[,1]+y[,2], bg=tissueColors[t], pch=21, col=tissueBorder[t], cex=tissueCex[t]*1, lwd=0.5, xlab="Time", ylab="Total SNVs/Gb", log='')
p <- predict(loess(rowSums(y)~x, span=1), newdata=sort(x, na.last=NA), se=TRUE)
r <- function(x) c(x, rev(x))
polygon(r(sort(x, na.last=NA)), c(p$fit+2*p$se, rev(p$fit-2*p$se)), col="#00000044", border=NA)
lines(sort(x, na.last=NA),p$fit)
#s <- 12/8; dev.copy2pdf(file="nDeam22Time.pdf", width=2*s, height=2*s, pointsize=8*s)
Age at diagnosis
par(mfrow=c(6,6), mar=c(3,3,2,1),mgp=c(2,.5,0), tcl=0.25,cex=1, bty="L", xpd=FALSE, las=1, xpd=FALSE)
deamRateWgd <- list()
for(n in names(wgdTimeAbsType)){
a <- age[sample2donor[rownames(wgdTimeAbsType[[n]])]]
yy <- nDeam22[rownames(wgdTimeAbsType[[n]])]/(2-t0[rownames(wgdTimeAbsType[[n]])])
xx <- a
r <- yy/xx
m <- median(r,na.rm=TRUE)
deamRateWgd[[n]] <- r
try({
w <- (r-m)^2/m^2 <= 2^2
plot(xx, yy, bg=tissueColors[n], col=tissueBorder[n], pch=NA, log='', xlab="Age at diagnosis", ylab="SNVs/Gb", main=n, ylim=c(0,max(yy, na.rm=TRUE)), xlim=c(0,max(age, na.rm=TRUE)), cex.main=1)
par(xpd=NA)
segments(x0=0,y0=0, xx, yy, col=tissueLines[n], lty=tissueLty[n])
points(xx, yy, bg=tissueColors[n], col=ifelse(w,tissueBorder[n], tissueColors[n]), pch=ifelse(w,21,4))
par(xpd=FALSE)
#abline(l, lty=3)
#abline(l$coef[1], l$coef[1])
abline(0, m, lty=3)
#lines(c(x0,2*x0), c(0,1))
})
}
n <- names(deamRateWgd)
q <- sapply(deamRateWgd, function(r){
m <- median(r,na.rm=TRUE)
w <- (r-m)^2/m^2 <= 2^2
range(r[w], na.rm=TRUE)})
plot(sapply(deamRateWgd, median, na.rm=TRUE), pch=NA , ylab="SNVs/Gb/yr", main="CpG>TpG rate", ylim=c(0, max(q)), cex.main=1, xaxt='n', xlab="Tumour type")
segments(seq_along(deamRateWgd),q[1,],seq_along(deamRateWgd), q[2,], col=tissueLines[n], lty=1)
points(sapply(deamRateWgd, median, na.rm=TRUE), pch=21, col=tissueBorder[n], bg=tissueColors[n])
accelRelWgd <- sapply(names(wgdTimeAbs), function(n) {
r <- rateDeam[[n]]
x <- wgdTimeAbs[[n]]
r0 <- quantile(r[!names(r) %in% remove], 0.20, na.rm=TRUE)
a <- cut(pmin(pmax(1,(r/r0-0.9)/0.1),10), c(0,1.5,3.75,6.25,8.75,20), labels=c("1x","2.5x","5x","7.5x","10x"))
print(table(a))
names(a) <- names(r)
ta <- sapply(rownames(x), function(ss) x[ss, "hat",a[ss]])
ta
})
## a
## 1x 2.5x 5x 7.5x 10x
## 10 5 3 1 16
## a
## 1x 2.5x 5x 7.5x 10x
## 7 4 0 5 7
## a
## 1x 2.5x 5x 7.5x 10x
## 8 5 3 2 19
## a
## 1x 2.5x 5x 7.5x 10x
## 39 27 52 26 40
## a
## 1x 2.5x 5x 7.5x 10x
## 5 5 3 4 1
## a
## 1x 2.5x 5x 7.5x 10x
## 10 9 10 2 10
## a
## 1x 2.5x 5x 7.5x 10x
## 35 17 21 9 54
## a
## 1x 2.5x 5x 7.5x 10x
## 12 10 10 5 23
## a
## 1x 2.5x 5x 7.5x 10x
## 26 18 10 13 30
## a
## 1x 2.5x 5x 7.5x 10x
## 17 4 9 5 22
## a
## 1x 2.5x 5x 7.5x 10x
## 30 26 24 15 16
## a
## 1x 2.5x 5x 7.5x 10x
## 9 3 4 5 24
## a
## 1x 2.5x 5x 7.5x 10x
## 10 4 7 4 8
## a
## 1x 2.5x 5x 7.5x 10x
## 87 117 75 23 24
## a
## 1x 2.5x 5x 7.5x 10x
## 8 3 2 3 19
## a
## 1x 2.5x 5x 7.5x 10x
## 11 9 15 7 6
## a
## 1x 2.5x 5x 7.5x 10x
## 25 14 13 11 44
## a
## 1x 2.5x 5x 7.5x 10x
## 28 38 29 11 7
## a
## 1x 2.5x 5x 7.5x 10x
## 55 55 50 28 50
## a
## 1x 2.5x 5x 7.5x 10x
## 22 3 3 8 49
## a
## 1x 2.5x 5x 7.5x 10x
## 78 40 39 38 89
## a
## 1x 2.5x 5x 7.5x 10x
## 24 16 21 9 37
## a
## 1x 2.5x 5x 7.5x 10x
## 4 4 2 2 3
## a
## 1x 2.5x 5x 7.5x 10x
## 5 6 4 1 3
## a
## 1x 2.5x 5x 7.5x 10x
## 23 5 7 5 34
## a
## 1x 2.5x 5x 7.5x 10x
## 12 13 7 5 14
par(mar=c(3,3,1,1),mgp=c(2,.5,0), tcl=-0.25,cex=1, bty="L", xpd=FALSE, las=1)
x <- Reduce("c",accelRelWgd)
y <- Reduce("c",sapply(wgdTimeAbs, function(x) x[,"hat","5x"]))
t <- donor2type[sample2donor[names(x)]]
plot(y+runif(length(y)),x+runif(length(y)), pch=21, bg=tissueColors[t], col=tissueBorder[t], cex=tissueCex[t]*1, lwd=0.5, xlab="Time (constant acceleration)", ylab="Time (sample-specific accel.)", log='')
#s <- 12/8; dev.copy2pdf(file="accelRelWgd.pdf", width=2*s, height=2*s, pointsize=8*s)
Quantiles
par(mar=c(3,3,1,1),mgp=c(2,.5,0), tcl=-0.25,cex=1, bty="L", xpd=FALSE, las=1)
u <- setdiff(names(finalSnv)[uniqueSamples], remove)
qAccelRelWgd <- sapply(accelRelWgd, function(x){
quantile(x[names(x) %in% u], na.rm=TRUE)
})
t <- colnames(qAccelRelWgd)
plot(qWgd["50%","5x",], qAccelRelWgd["50%",], pch=NA, xlab="Time [years], constant acceleration", ylab="Time [years], sample-specific accel.", xlim=c(0,30), ylim=c(0,30))
abline(0,1, lty=3)
segments(qWgd["25%","5x",], qAccelRelWgd["50%",],qWgd["75%","5x",], qAccelRelWgd["50%",], lty=tissueLty[t], col=tissueLines[t])
segments(qWgd["50%","5x",], qAccelRelWgd["25%",],qWgd["50%","5x",], qAccelRelWgd["75%",], lty=tissueLty[t], col=tissueLines[t])
points(qWgd["50%","5x",], qAccelRelWgd["50%",], bg=tissueColors[t], pch=21, col=tissueBorder[t], cex=tissueCex[t], lwd=0.5)
#s <- 12/8; dev.copy2pdf(file="qAccelRelWgd.pdf", width=2*s, height=2*s, pointsize=8*s)
Mutations per year vs time. If the mutation rate was constant, there should be a proportional increase due to the double opportunity to mutate after WGD.
par(mfrow=c(6,6), mar=c(3,3,2,1),mgp=c(2,.5,0), tcl=0.25,cex=1, bty="L", xpd=FALSE, las=1)
for(n in names(wgdTimeAbsType)){
a <- age[sample2donor[rownames(wgdTimeAbsType[[n]])]]
yy <- nDeam22[rownames(wgdTimeAbsType[[n]])]/a
xx <- 1-t0[rownames(wgdTimeAbsType[[n]])]#y[[n]][,"hat"]/a
try({
l <- lm(yy ~ xx)
x0 <- -l$coef[2]/l$coef[1]
#print(x0)
plot(xx, yy, bg=tissueColors[n], col=tissueBorder[n],, pch=21, log='', xlab="1-time [mutations]", ylab="SNVs/Gb/yr", main=n, ylim=c(0,max(yy, na.rm=TRUE)), xlim=c(0,max(xx, na.rm=TRUE)), cex.main=1)
#abline(l, lty=3)
#abline(l$coef[1], l$coef[1])
m <- median(yy/(1+xx),na.rm=TRUE)
abline(m, m, lty=3)
#lines(c(x0,2*x0), c(0,1))
})
}
#par(mfrow=c(1,1), mar=c(3,3,1,1), mgp=c(2,0.5,0), bty="L")
x0 <- 70
y0 <- 1
a <- 5
plot(x0,y0, xlab="Time [yr]", ylab="Time [fraction of mutations]", pch=19, xlim=c(0,80), ylim=c(0,y0*1.1))
r <- seq(0.66,1,0.001)
yy <- c(0,y0*r/(a*(1-r)+r))
xx <- c(0,r)*x0
polygon(xx, yy, col="grey", border=NA)
for(i in seq(51, 341,30))
lines(c(0,xx[i],x0), c(0,yy[i],y0), col='darkgrey')
t <- 3/5*y0
ta <- function(t0, a, ta){
t1 <- t0 + (1-t0) *(a-1)/a*ta #acc before dup
t2 <- t0 * (ta + a*(1-ta)) ## after
tf <- pmin(t1, t2) # as fraction of clonal
return(tf)
}
tf <- sapply(r, function(rr) ta(t/y0, a, rr))
tmax <- xx[which.min(abs(yy-t))]
tmin <- t/ y0*x0
lines(c(x0,x0,0), c(0,y0,y0), lty=3)
lines(c(tmax,tmax,0), c(0,t,t), lty=2)
lines(c(tmin,tmin,0), c(0,t,t), lty=2)
#d <- density(tf*x, from=tmin, to=tmax)
lines(quantile(tf, c(0.025,0.975))*x0, c(0,0), lwd=2)
points(c(tmin,median(tf)*x0), c(0,0), pch=c(1,19))
mtext(side=1, at=x0, text="Diagnosis", line=2)
text(x=0, y=t, labels="WGD", pos=4, adj=c(0,1))
#lines(d$x,d$y/max(d$y)*50)
#s <- 12/8; dev.copy2pdf(file="concept.pdf", width=2*s, height=2*s, pointsize=8*s)
par(mar=c(3,3,1,1), mgp=c(2,0.5,0), tcl=-0.25, bty="L")
plot(accel, qWgd["50%",,1], type='l', lty=0, ylim=c(0,30), xlab= "CpG>TpG rate acceleration", ylab="Median occurrence [years]", yaxs="i", xaxt="n")
axis(side=1, at=accel)
for(j in 1:dim(qWgd)[3]) lines(accel, qWgd["50%",,j], type='l', col=tissueLines[dimnames(qWgd)[[3]][j]],
lty=ifelse(nWgd[dimnames(qWgd)[[3]][j]]<=9, 3, tissueLty[dimnames(qWgd)[[3]][j]]))
#s <- 12/8; dev.copy2pdf(file="realTimeWgdAccel.pdf", width=2*s, height=2*s, pointsize=8*s)
Scatter of median
par( mar=c(4,3,1,1), mgp=c(2,.5,0), tcl=0.25,cex=1, bty="L", xpd=FALSE, las=1)
a <- "5x"
plot(qSubclone["50%",a,dimnames(qWgd)[[3]]], qWgd["50%",a,], col=tissueColors[dimnames(qWgd)[[3]]], pch=16, cex=2, xlab="Median time subclones", ylab="Median time WGD", xlim=c(0,5), ylim=c(0,10))
Dotplot
par( mar=c(3,3,3,10), mgp=c(2,.5,0), tcl=-0.25,cex=1, bty="n", xpd=FALSE, las=1)
w <- "50%"
x <- diag(qSubclone[w,guessAccel[dimnames(qSubclone)[[3]]],])#t[1,3,]
names(x) <- dimnames(qSubclone)[[3]]
y <- diag(qWgd[w,guessAccel[dimnames(qWgd)[[3]]],])#t[1,3,]
names(y) <- dimnames(qWgd)[[3]]
plot(c(rep(1, dim(qSubclone)[3]), rep(2, each=dim(qWgd)[3])), c(x,y), bg=tissueColors[c(dimnames(qSubclone)[[3]], dimnames(qWgd)[[3]])], pch=21, cex=1, xaxt="n", ylab="Years before diagnosis", xlab="", xlim=c(0.5,2.5), ylim=c(0, max(y, na.rm=TRUE)))
segments(rep(1, each=dim(qWgd)[3]), x[dimnames(qWgd)[[3]]], rep(2, each=dim(qWgd)[3]), y,col=tissueLines[dimnames(qWgd)[[3]]], lty= ifelse(nWgd <= 5, 3, tissueLty[dimnames(qWgd)[[3]]]))
o <- order(y, na.last=NA)
y0 <- y[o]
y1 <- mg14:::mindist(y[o], diff(par('usr')[3:4])/30)
par(xpd=NA)
mtext(dimnames(qWgd)[[3]][o], at=y1, side=4 )
segments(2.1,y0,2.2,y0)
segments(2.2,y0,2.3,y1)
segments(2.3,y1,2.4,y1)
mg14::rotatedLabel(1:2, labels=c("Subclones","WGD"))
#segments(2.1,y0,2.3,y1)
#par(xpd=TRUE)
#s <- 12/8
#dev.copy2pdf(file="realTimeSubcloneWgd.pdf", width=2.5*s, height=3.5*s, pointsize=8*s)
donor2sample <- split(names(finalBB),sample2donor[names(finalBB)])
donor2sample <- donor2sample[sapply(donor2sample, length)>1]
WGD - samples with * removed
par(mfrow=c(2,3), mar=c(4,3,2,1), cex=1)
for(n in names(donor2sample)){
t <- as.character(donor2type[n])
try({
s <- wgdTimeAbs[[t]][,,guessAccel[t]]
s <- s[rownames(s) %in% donor2sample[[n]],,drop=FALSE]
if(length(s) ==0 ) next
if(nrow(s) ==1) next
plot(s[,"hat"], ylim=c(0, 30), main = paste(n, t), ylab="Time WGD [yr]", xlab="", xaxt="n", xlim=c(0,nrow(s)+1), pch=NA)
mg14::rotatedLabel(labels=paste0(sample2icgc[rownames(s)],ifelse(rownames(s) %in% remove, "*","")))
segments(x0=1:nrow(s),y0=s[,'lo'], y1=s[,'up'], col=tissueLines[t],lty=tissueLty[t])
points(s[,"hat"], pch=21, bg=tissueColors[t], cex=tissueCex[t], col=tissueBorder[t])
abline(h= mean(s[,'hat']), col=tissueLines[t], lty=3)
})
}
MRCA - samples with * removed
par(mfrow=c(8,8), mar=c(4,3,2,1), cex=1)
for(n in names(donor2sample)){
t <- as.character(donor2type[n])
try({
s <- subclonesTimeAbs[[t]][,,guessAccel[t]]
s <- s[rownames(s) %in% donor2sample[[n]],,drop=FALSE]
if(length(s) ==0 ) next
if(nrow(s) ==1) next
plot(s[,"hat"], ylim=c(0, 20), main = paste(n, t), ylab="Time WGD [yr]", xlab="", xaxt="n", xlim=c(0,nrow(s)+1), pch=NA)
mg14::rotatedLabel(labels=paste0(sample2icgc[rownames(s)],ifelse(rownames(s) %in% remove, "*","")))
par(xpd=NA)
segments(x0=1:nrow(s),y0=s[,'10%'], y1=s[,'90%'], col=tissueLines[t],lty=tissueLty[t])
points(s[,"hat"], pch=21, bg=tissueColors[t], cex=tissueCex[t], col=tissueBorder[t])
par(xpd=TRUE)
abline(h= mean(s[,'hat']), col=tissueLines[t], lty=3)
})
}
n <- names(finalSnv)
wgdMrcaTimingData <- data.frame(
uuid=n,
icgc_sample_id=sample2icgc[n],
icgc_donor_id=sample2donor[n],
tissue=donor2type[sample2donor[n]],
WGD=isWgd,
ploidy=finalPloidy,
eff_ploidy=effGenome,
purity=finalPurity,
age=round(age[sample2donor[n]]),
n_snv_mnv=sapply(finalSnv, nrow),
CpG_TpG_trunk_pwradj=round(branchDeam[,2],2),
CpG_TpG_subclonal_branch_pwradj=round(branchDeam[,1],2),
CpG_TpG_subclonal_linear_pwradj=round(branchDeamLinear[,1],2),
TiN = TiN[sample2donor[n]],
remove = n %in% remove,
accel = ifelse(n %in% remove,NA,guessAccel[as.character(donor2type[sample2donor[n]])]),
row.names=n)
t <- as.data.frame(round(Reduce("rbind", wgdTimeAbsType),2))
colnames(t) <- c("time", "time.lo","time.up")
nDeam <- sapply(wgdParamDeam[!void], function(x) if(!is.null(x$n)) sum(x$n, na.rm=TRUE) else NA)
w <- data.frame(row.names=rownames(t), t, `CpG_TpG_total`=nDeam[rownames(t)])
colnames(w) <- sub("lo", "10%", sub("up","90%", colnames(w)))
t <- cbind(branching=as.data.frame(round(Reduce("rbind", subclonesTimeAbsType),2)), linear=as.data.frame(round(Reduce("rbind", subclonesTimeAbsTypeLinear),2)))
colnames(t) <- sub("\\.hat","", colnames(t))
wgdMrcaTimingData <- cbind(wgdMrcaTimingData,
WGD=w[rownames(wgdMrcaTimingData),],
MRCA.time=t[rownames(wgdMrcaTimingData),]
)
write.table(wgdMrcaTimingData, file=paste0(Sys.Date(),"-wgdMrcaTiming.txt"), sep="\t", quote=FALSE, row.names=FALSE)
t <- do.call("rbind", mclapply(finalBB, function(bb) as.data.frame(bb[,c(1:6,38:47)])))
n <- rownames(t)
t <- as.data.frame(lapply(t, function(x) if(class(x)=="numeric") round(x,3) else x))
t$sample <- sub("\\..+","",n)
write.table(t, file=paste0(Sys.Date(),"-allSegmentsTimeRaw.txt"), quote=FALSE, sep="\t")
t <- as.data.frame(finalDriversAnnotated)[c(1,2,6,7,9,10,11,12,13,31:44)]
t <- as.data.frame(lapply(t, function(x) if(class(x)=="numeric") round(x,3) else x));
write.table(t, file=paste0(Sys.Date(),"-driversTiming.txt"), quote=FALSE, sep="\t")
cat(system("git log -n1", intern=TRUE), sep="\n")
## commit 0ee3b9fd83804748041a9b3e5032ac72bad47118
## Author: Moritz Gerstung <moritz.gerstung@ebi.ac.uk>
## Date: Tue Jul 24 15:53:52 2018 +0100
##
## Fixing WGD timing issue leading to NA if no mutations present
l <- ls()
data.frame(variable=l, Reduce("rbind",lapply(l, function(x) data.frame(class=class(get(x)), size=format(object.size(get(x)), units="auto")))))
## variable class size
## 1 a character 96 bytes
## 2 ab array 8.7 Kb
## 3 accel numeric 528 bytes
## 4 accelRelWgd list 77 Kb
## 5 addAssignment function 11.7 Kb
## 6 addDriver function 26.1 Kb
## 7 addFinalDriver function 16.1 Kb
## 8 addMutCn function 12.1 Kb
## 9 addTNC function 18.1 Kb
## 10 age numeric 180 Kb
## 11 aggregatePerChromosome function 31.3 Kb
## 12 allChrAgg array 2.8 Mb
## 13 allChrCancerHist array 78.5 Kb
## 14 allGender data.frame 1.2 Mb
## 15 applyPigeonHole function 16.2 Kb
## 16 asum function 2.2 Kb
## 17 at function 14.5 Kb
## 18 averageEvenPloidy function 8.5 Kb
## 19 averageHom function 7.4 Kb
## 20 averagePloidy function 9.3 Kb
## 21 avgWeights function 10.6 Kb
## 22 b matrix 472 bytes
## 23 basePath character 152 bytes
## 24 bb GRanges 11.8 Kb
## 25 bbFiles character 40 bytes
## 26 bbPath character 216 bytes
## 27 bbToTime function 70.5 Kb
## 28 betaFromCi function 20.7 Kb
## 29 branchDeam matrix 304.2 Kb
## 30 branchDeamLinear matrix 304.2 Kb
## 31 branchLengths function 18.4 Kb
## 32 bwd numeric 48 bytes
## 33 c numeric 328 bytes
## 34 CANCERGENES character 48.4 Kb
## 35 cc list 39.9 Kb
## 36 chrOffset numeric 6.1 Kb
## 37 ci matrix 944 bytes
## 38 classifyMutations function 56.5 Kb
## 39 classWgd function 1.7 Kb
## 40 clinicalData data.frame 874.1 Kb
## 41 clusters data.frame 944 bytes
## 42 clustersFromBB function 12.4 Kb
## 43 cn data.frame 123.7 Mb
## 44 cnPath character 216 bytes
## 45 cnStates list 2.7 Kb
## 46 cnWeights function 8.6 Kb
## 47 col character 648 bytes
## 48 colTime character 936 bytes
## 49 computeMutCn function 319.4 Kb
## 50 computeSubclonesTimeAbs function 44.2 Kb
## 51 computeWgdParamDeam function 40 Kb
## 52 consensusClustersToOld function 5.4 Kb
## 53 d matrix 82.1 Kb
## 54 d0 numeric 2.9 Kb
## 55 d1 numeric 2.9 Kb
## 56 d50 integer 56 bytes
## 57 data list 1.4 Mb
## 58 dbetabinom function 6.4 Kb
## 59 deamRateWgd list 66.4 Kb
## 60 defineMcnStates function 222.6 Kb
## 61 df data.frame 227.8 Kb
## 62 distAsRange function 16.6 Kb
## 63 donor2sample list 23.7 Kb
## 64 donor2type factor 188.5 Kb
## 65 doubleGains data.frame 295.1 Kb
## 66 doubleGainsAggregated data.frame 41.6 Kb
## 67 dpFiles character 303.9 Kb
## 68 dpPath character 152 bytes
## 69 dtrbetabinom function 9.6 Kb
## 70 dtrbinom function 3 Kb
## 71 dumpfile character 120 bytes
## 72 e density 10.4 Kb
## 73 effGenome numeric 282.3 Kb
## 74 f function 1.7 Kb
## 75 finalBB list 3.5 Gb
## 76 finalBBGray list 68.3 Mb
## 77 finalClusters list 2.8 Mb
## 78 finalClustersGray list 77.7 Kb
## 79 finalData data.frame 10.1 Mb
## 80 finalDrivers VRanges 1.4 Mb
## 81 finalDriversAnnotated VRanges 2.1 Mb
## 82 finalGenotypes array 156.2 Mb
## 83 finalGenotypesP array 104.2 Mb
## 84 finalGenotypesQ array 21.1 Mb
## 85 finalHom numeric 282.3 Kb
## 86 finalIndel list 2 Gb
## 87 finalIndelGray list 648.4 Mb
## 88 finalPloidy numeric 282.3 Kb
## 89 finalPower list 568.9 Kb
## 90 finalPurity numeric 282.3 Kb
## 91 finalPurityGray numeric 7.8 Kb
## 92 finalSnv list 20.9 Gb
## 93 finalSnvGray list 1.7 Gb
## 94 finalSv list 2.9 Gb
## 95 findMainCluster function 25.5 Kb
## 96 first_time logical 48 bytes
## 97 fit stanfit 62.9 Mb
## 98 flattenBB function 22.6 Kb
## 99 fm numeric 2.5 Kb
## 100 fmq matrix 3.1 Kb
## 101 fracGenomeWgdComp matrix 478.5 Kb
## 102 fractionGenomeWgdCompatible function 27.6 Kb
## 103 g matrix 59 Kb
## 104 getAltCount function 32.2 Kb
## 105 getGenotype function 18.1 Kb
## 106 getMutationCluster function 6.9 Kb
## 107 getTumorCounts function 7.1 Kb
## 108 getTumorDepth function 20.5 Kb
## 109 grayList logical 10.9 Kb
## 110 gu matrix 33.9 Kb
## 111 guessAccel character 2.8 Kb
## 112 h histogram 2.2 Kb
## 113 hh matrix 3.7 Kb
## 114 histBeta function 29.4 Kb
## 115 i numeric 48 bytes
## 116 I matrix 1.3 Mb
## 117 isDeamination function 2.7 Kb
## 118 isDeaminationNoUV function 2.7 Kb
## 119 isWgd logical 271.5 Kb
## 120 j integer 48 bytes
## 121 J matrix 1.3 Mb
## 122 l character 16 Kb
## 123 lineCol character 4.6 Kb
## 124 loadAssignment function 6.6 Kb
## 125 loadBB function 8.2 Kb
## 126 loadClusters function 8.9 Kb
## 127 loadCn function 11 Kb
## 128 loadConsensusClusters function 8.9 Kb
## 129 loadConsensusCNA function 54.4 Kb
## 130 loadPositions function 9.1 Kb
## 131 loadVcf function 26.7 Kb
## 132 m numeric 48 bytes
## 133 ma numeric 3 Kb
## 134 matchDrivers function 16 Kb
## 135 mcnHeader function 12.4 Kb
## 136 mergeClusters function 22.6 Kb
## 137 mergeClustersByMutreadDiff function 68.7 Kb
## 138 my_png function 6.6 Kb
## 139 n character 102.2 Mb
## 140 na.rm function 1.7 Kb
## 141 nClones integer 271.5 Kb
## 142 nDeam integer 73.1 Kb
## 143 nDeam22 numeric 76.1 Kb
## 144 nmSolve function 35.5 Kb
## 145 nSub integer 271.5 Kb
## 146 nWgd integer 2 Kb
## 147 o integer 168 bytes
## 148 p list 152.6 Kb
## 149 parseRegion function 10.3 Kb
## 150 pbetabinom function 6.4 Kb
## 151 pGainToTime function 25.4 Kb
## 152 pi matrix 232 bytes
## 153 piToTime function 93.1 Kb
## 154 plotBB function 92.2 Kb
## 155 plotPoset function 8.9 Kb
## 156 plotSample function 92.2 Kb
## 157 plotSv function 56.5 Kb
## 158 plotTiming function 74.7 Kb
## 159 plotVcf function 59.4 Kb
## 160 posetDist function 14.3 Kb
## 161 posteriorMutCN function 17.5 Kb
## 162 power function 6.6 Kb
## 163 predictRealTime function 8.1 Kb
## 164 prgn character 696 bytes
## 165 probGenotype function 17.2 Kb
## 166 probGenotypeTail function 16.1 Kb
## 167 ptrbetabinom function 8.5 Kb
## 168 pu matrix 41.7 Kb
## 169 purity numeric 48 bytes
## 170 purityPloidy data.frame 348.8 Kb
## 171 q matrix 2.5 Kb
## 172 q1 numeric 282.3 Kb
## 173 q5 numeric 282.3 Kb
## 174 qAccelRelWgd matrix 3.4 Kb
## 175 qPanCan numeric 528 bytes
## 176 qRateDeam matrix 4.2 Kb
## 177 qSubclone array 9.9 Kb
## 178 qSubcloneLinear array 9.9 Kb
## 179 qWgd array 7.8 Kb
## 180 r numeric 2.7 Kb
## 181 rateDeam list 289.1 Kb
## 182 reduceBB function 29 Kb
## 183 reduceToCoverRelations function 41.4 Kb
## 184 refFile character 120 bytes
## 185 refLengths GRanges 21.4 Kb
## 186 remove character 69.7 Kb
## 187 removeSuperclones function 23.5 Kb
## 188 rho numeric 48 bytes
## 189 s matrix 864 bytes
## 190 sample2donor character 435.9 Kb
## 191 sample2icgc character 460.6 Kb
## 192 selectedSamples logical 10.9 Kb
## 193 set1 character 600 bytes
## 194 simulateMutations function 56 Kb
## 195 specimenData data.frame 2.3 Mb
## 196 stackTime function 30.2 Kb
## 197 subclonesTimeAbs list 616.5 Kb
## 198 subclonesTimeAbsLinear list 616.5 Kb
## 199 subclonesTimeAbsType list 259.3 Kb
## 200 subclonesTimeAbsTypeLinear list 259.3 Kb
## 201 t data.frame 1.7 Mb
## 202 T.i.F matrix 294.1 Kb
## 203 t0 numeric 76.1 Kb
## 204 t2 numeric 48 bytes
## 205 t3 numeric 48 bytes
## 206 ta function 11.5 Kb
## 207 testDriver function 5.2 Kb
## 208 testIndel function 5.2 Kb
## 209 tf numeric 2.7 Kb
## 210 timeToBeta function 17.4 Kb
## 211 timing_data matrix 3.3 Mb
## 212 timingClass factor 272.2 Kb
## 213 timingInfo data.frame 556.3 Kb
## 214 TiN numeric 180 Kb
## 215 tissueBorder character 3.1 Kb
## 216 tissueCex numeric 3 Kb
## 217 tissueColors character 4.6 Kb
## 218 tissueLines character 4.6 Kb
## 219 tissueLty numeric 3 Kb
## 220 tmax numeric 48 bytes
## 221 tmin numeric 48 bytes
## 222 tncToPyrimidine function 24.4 Kb
## 223 toGraph function 11 Kb
## 224 tpy numeric 48 bytes
## 225 tryExceptNull function 2 Kb
## 226 tt matrix 714.7 Kb
## 227 tt0 matrix 304.2 Kb
## 228 typeNa character 440 bytes
## 229 typesSubclones character 2.2 Kb
## 230 u character 188.6 Kb
## 231 uniqueSamples logical 10.9 Kb
## 232 v integer 2 Kb
## 233 vcf CollapsedVCF 50.8 Mb
## 234 vcfIndel CollapsedVCF 43.8 Mb
## 235 vcfPath character 136 bytes
## 236 void logical 80.1 Kb
## 237 vv table 2.6 Kb
## 238 w data.frame 71.2 Kb
## 239 w22 numeric 76.1 Kb
## 240 wccClusters list 2.8 Mb
## 241 wccPurity numeric 21.7 Kb
## 242 wccTable data.frame 570.9 Kb
## 243 wemeClustersMerged list 3.1 Mb
## 244 wgdCancerHist matrix 5.8 Kb
## 245 wgdMrcaTimingData data.frame 1.3 Mb
## 246 wgdParamDeam list 49.5 Mb
## 247 wgdPoss logical 271.5 Kb
## 248 wgdStar factor 272.1 Kb
## 249 wgdStat factor 272 Kb
## 250 wgdTest function 14.5 Kb
## 251 wgdTimeAbs list 171.6 Kb
## 252 wgdTimeAbsType list 86.2 Kb
## 253 wgdTimeDeamAcc array 10.3 Mb
## 254 whiteList logical 10.9 Kb
## 255 wnmSolve function 40.2 Kb
## 256 wu logical 27 Kb
## 257 x character 96 bytes
## 258 x0 numeric 48 bytes
## 259 xx numeric 2.7 Kb
## 260 y numeric 2.1 Kb
## 261 y0 numeric 2.1 Kb
## 262 y1 numeric 2.1 Kb
## 263 yy numeric 2.7 Kb
sessionInfo()
## R version 3.3.3 (2017-03-06)
## Platform: x86_64-redhat-linux-gnu (64-bit)
## Running under: Red Hat Enterprise Linux Server 7.3 (Maipo)
##
## locale:
## [1] en_GB.UTF-8
##
## attached base packages:
## [1] splines stats4 parallel stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] rstan_2.17.3 StanHeaders_2.17.2 ggplot2_2.2.1 VGAM_1.0-3
## [5] VariantAnnotation_1.20.3 SummarizedExperiment_1.4.0 Biobase_2.34.0 Rsamtools_1.26.2
## [9] Biostrings_2.42.1 XVector_0.14.1 GenomicRanges_1.26.4 GenomeInfoDb_1.10.3
## [13] IRanges_2.8.2 S4Vectors_0.12.2 BiocGenerics_0.20.0 knitr_1.20
## [17] rj_2.0.5-2
##
## loaded via a namespace (and not attached):
## [1] Rcpp_0.12.16 rj.gd_2.0.0-1 mvtnorm_1.0-7 lattice_0.20-34
## [5] rprojroot_1.3-2 digest_0.6.15 cellranger_1.1.0 plyr_1.8.4
## [9] nnls_1.4 backports_1.1.2 RSQLite_2.1.0 evaluate_0.10.1
## [13] pillar_1.2.1 zlibbioc_1.20.0 rlang_0.2.0 GenomicFeatures_1.26.4
## [17] readxl_1.0.0 lazyeval_0.2.1 curl_3.2 data.table_1.10.4-3
## [21] car_3.0-0 blob_1.1.1 Matrix_1.2-8 rmarkdown_1.9
## [25] BiocParallel_1.8.2 foreign_0.8-67 stringr_1.3.0 RCurl_1.95-4.10
## [29] bit_1.1-12 biomaRt_2.30.0 munsell_0.4.3 rtracklayer_1.34.2
## [33] htmltools_0.3.6 tibble_1.4.2 gridExtra_2.3 rio_0.5.10
## [37] codetools_0.2-15 XML_3.98-1.10 GenomicAlignments_1.10.1 bitops_1.0-6
## [41] grid_3.3.3 gtable_0.2.0 DBI_0.8 magrittr_1.5
## [45] scales_0.5.0 carData_3.0-1 stringi_1.1.7 mg14_0.0.5
## [49] openxlsx_4.0.17 RColorBrewer_1.1-2 forcats_0.3.0 tools_3.3.3
## [53] bit64_0.9-7 BSgenome_1.42.0 abind_1.4-5 yaml_2.1.18
## [57] AnnotationDbi_1.36.2 inline_0.3.14 colorspace_1.3-2 memoise_1.1.0
## [61] haven_1.1.1
devtools::session_info()
## Session info ----------------------------------------------------------------------------------------------------------
## setting value
## version R version 3.3.3 (2017-03-06)
## system x86_64, linux-gnu
## ui X11
## language (EN)
## collate en_GB.UTF-8
## tz Europe/London
## date 2018-07-24
## Packages --------------------------------------------------------------------------------------------------------------
## package * version date source
## abind 1.4-5 2016-07-21 CRAN (R 3.3.3)
## AnnotationDbi 1.36.2 2018-01-05 Bioconductor
## backports 1.1.2 2017-12-13 CRAN (R 3.3.3)
## base * 3.3.3 2017-03-08 local
## Biobase * 2.34.0 2018-01-05 Bioconductor
## BiocGenerics * 0.20.0 2018-01-05 Bioconductor
## BiocParallel 1.8.2 2018-01-05 Bioconductor
## biomaRt 2.30.0 2018-01-05 Bioconductor
## Biostrings * 2.42.1 2018-01-05 Bioconductor
## bit 1.1-12 2014-04-09 CRAN (R 3.3.3)
## bit64 0.9-7 2017-05-08 CRAN (R 3.3.3)
## bitops 1.0-6 2013-08-17 CRAN (R 3.3.3)
## blob 1.1.1 2018-03-25 CRAN (R 3.3.3)
## BSgenome 1.42.0 2018-01-05 Bioconductor
## car 3.0-0 2018-04-02 CRAN (R 3.3.3)
## carData 3.0-1 2018-03-28 CRAN (R 3.3.3)
## cellranger 1.1.0 2016-07-27 CRAN (R 3.3.3)
## codetools 0.2-15 2016-10-05 CRAN (R 3.3.3)
## colorspace 1.3-2 2016-12-14 CRAN (R 3.3.3)
## curl 3.2 2018-03-28 CRAN (R 3.3.3)
## data.table 1.10.4-3 2017-10-27 CRAN (R 3.3.3)
## datasets * 3.3.3 2017-03-08 local
## DBI 0.8 2018-03-02 cran (@0.8)
## devtools 1.13.5 2018-02-18 CRAN (R 3.3.3)
## digest 0.6.15 2018-01-28 CRAN (R 3.3.3)
## evaluate 0.10.1 2017-06-24 CRAN (R 3.3.3)
## forcats 0.3.0 2018-02-19 CRAN (R 3.3.3)
## foreign 0.8-67 2016-09-13 CRAN (R 3.3.3)
## GenomeInfoDb * 1.10.3 2018-04-11 Bioconductor
## GenomicAlignments 1.10.1 2018-01-05 Bioconductor
## GenomicFeatures 1.26.4 2018-01-05 Bioconductor
## GenomicRanges * 1.26.4 2018-04-11 Bioconductor
## ggplot2 * 2.2.1 2016-12-30 CRAN (R 3.3.3)
## graphics * 3.3.3 2017-03-08 local
## grDevices * 3.3.3 2017-03-08 local
## grid 3.3.3 2017-03-08 local
## gridExtra 2.3 2017-09-09 CRAN (R 3.3.3)
## gtable 0.2.0 2016-02-26 CRAN (R 3.3.3)
## haven 1.1.1 2018-01-18 CRAN (R 3.3.3)
## htmltools 0.3.6 2017-04-28 CRAN (R 3.3.3)
## inline 0.3.14 2015-04-13 CRAN (R 3.3.3)
## IRanges * 2.8.2 2018-04-11 Bioconductor
## knitr * 1.20 2018-02-20 CRAN (R 3.3.3)
## lattice 0.20-34 2016-09-06 CRAN (R 3.3.3)
## lazyeval 0.2.1 2017-10-29 CRAN (R 3.3.3)
## magrittr 1.5 2014-11-22 CRAN (R 3.3.3)
## Matrix 1.2-8 2017-01-20 CRAN (R 3.3.3)
## memoise 1.1.0 2017-04-21 CRAN (R 3.3.3)
## methods * 3.3.3 2017-03-08 local
## mg14 0.0.5 2018-04-11 Github (mg14/mg14@6a63283)
## munsell 0.4.3 2016-02-13 CRAN (R 3.3.3)
## mvtnorm 1.0-7 2018-01-26 CRAN (R 3.3.3)
## nnls 1.4 2012-03-19 CRAN (R 3.3.3)
## openxlsx 4.0.17 2017-03-23 CRAN (R 3.3.3)
## parallel * 3.3.3 2017-03-08 local
## pillar 1.2.1 2018-02-27 CRAN (R 3.3.3)
## plyr 1.8.4 2016-06-08 CRAN (R 3.3.3)
## RColorBrewer 1.1-2 2014-12-07 CRAN (R 3.3.3)
## Rcpp 0.12.16 2018-03-13 CRAN (R 3.3.3)
## RCurl 1.95-4.10 2018-01-04 CRAN (R 3.3.3)
## readxl 1.0.0 2017-04-18 CRAN (R 3.3.3)
## rio 0.5.10 2018-03-29 CRAN (R 3.3.3)
## rj * 2.0.5-2 2018-04-10 local
## rj.gd 2.0.0-1 2018-04-10 local
## rlang 0.2.0 2018-02-20 CRAN (R 3.3.3)
## rmarkdown 1.9 2018-03-01 CRAN (R 3.3.3)
## rprojroot 1.3-2 2018-01-03 CRAN (R 3.3.3)
## Rsamtools * 1.26.2 2018-01-05 Bioconductor
## RSQLite 2.1.0 2018-03-29 CRAN (R 3.3.3)
## rstan * 2.17.3 2018-01-20 CRAN (R 3.3.3)
## rtracklayer 1.34.2 2018-01-05 Bioconductor
## S4Vectors * 0.12.2 2018-04-11 Bioconductor
## scales 0.5.0 2017-08-24 CRAN (R 3.3.3)
## splines * 3.3.3 2017-03-08 local
## StanHeaders * 2.17.2 2018-01-20 CRAN (R 3.3.3)
## stats * 3.3.3 2017-03-08 local
## stats4 * 3.3.3 2017-03-08 local
## stringi 1.1.7 2018-03-12 CRAN (R 3.3.3)
## stringr 1.3.0 2018-02-19 CRAN (R 3.3.3)
## SummarizedExperiment * 1.4.0 2018-01-05 Bioconductor
## tibble 1.4.2 2018-01-22 CRAN (R 3.3.3)
## tools 3.3.3 2017-03-08 local
## utils * 3.3.3 2017-03-08 local
## VariantAnnotation * 1.20.3 2018-04-11 Bioconductor
## VGAM * 1.0-3 2017-01-11 Github (cran/VGAM@4bdb529)
## withr 2.1.2 2018-03-15 CRAN (R 3.3.3)
## XML 3.98-1.10 2018-02-19 CRAN (R 3.3.3)
## XVector * 0.14.1 2018-04-11 Bioconductor
## yaml 2.1.18 2018-03-08 CRAN (R 3.3.3)
## zlibbioc 1.20.0 2018-01-05 Bioconductor
All code is available at github.com/gerstung-lab/PCAWG-11
See https://github.com/gerstung-lab/MutationTime.R
#' # Calculation of mutation copy numbers and timing parameters
#' Minimal example
#' source("/Users/mg14/Projects/PCAWG-11/code/MutationTime.R")
#' vcf <- readVcf("final/final_consensus_12oct_passonly/snv_mnv/0040b1b6-b07a-4b6e-90ef-133523eaf412.consensus.20160830.somatic.snv_mnv.vcf.gz",genome="GRCh37")
#' bb <- loadBB("dp/20161213_vanloo_wedge_consSNV_prelimConsCNAallStar/4_copynumber/0040b1b6-b07a-4b6e-90ef-133523eaf412_segments.txt.gz")
#' clusters = read.table("dp/20161213_vanloo_wedge_consSNV_prelimConsCNAallStar/2_subclones/0040b1b6-b07a-4b6e-90ef-133523eaf412_subclonal_structure.txt.gz", header=TRUE, sep="\t")
#' purityPloidy <- read.table("dp/20161213_vanloo_wedge_consSNV_prelimConsCNAallStar/1_purity_ploidy/purity_ploidy.txt, header=TRUE, sep="\t")
#' purity <- purityPloidy[2,2]
#' MCN <- computeMutCn(vcf[1:1000], bb, clusters, purity)
#' # Check output
#' # Mutation Annotation
#' head(MCN$D)
#' # Classify as basic clonal states
#' table(classifyMutations(MCN$D))
#' # Timing parameters
#' MCN$P[[1]]
#' # Extract timing of segments
#' bb$timing_param <- MCN$P
#' bbToTime(bb)
#' PRE: Purity must be equal to the main clone, otherwise spurious results can be generated
#' PRE: CNV segments don't have to overlap, otherwise an error is generated: "Error in if (!mixFlag[j]) { : missing value where TRUE/FALSE needed"
require(VariantAnnotation)
require(VGAM)
#' Extract tumour depth
#' @param vcf
#' @return
#'
#' @author mg14
#' @export
getTumorDepth <- function(vcf){
if("t_alt_count" %in% colnames(info(vcf))){ ## consensus data, snv and indel
info(vcf)$t_alt_count + info(vcf)$t_ref_count
}else{ ## older data
if("FAZ" %in% rownames(geno(header(vcf)))){
rowSums(getTumorCounts(vcf))
}else{
geno(vcf)$DEP[,2]
}
}
}
#' Get alt alleles counts
#' @param vcf
#' @return
#'
#' @author mg14
#' @export
getAltCount <- function(vcf){
if("t_alt_count" %in% colnames(info(vcf))){ ## consensus data, snv and indel
info(vcf)$t_alt_count
}else{ ## older formats
if("FAZ" %in% rownames(geno(header(vcf)))){ ## ie subs
c <- getTumorCounts(vcf)
t <- c[,1:4] + c[,5:8]
colnames(t) <- substring(colnames(t),2,2)
a <- as.character(unlist(alt(vcf)))
a[!a%in%c('A','T','C','G')] <- NA
sapply(seq_along(a), function(i) if(is.na(a[i])) NA else t[i, a[i]])
}
else{ ## ie indel
#(geno(vcf)$PP + geno(vcf)$NP + geno(vcf)$PB + geno(vcf)$NB)[,"TUMOUR"]
geno(vcf)$MTR[,2]
}
}
}
dtrbinom <- function(x, size, prob, xmin=0) dbinom(x,size,prob) / pbinom(xmin-1, size, prob, lower.tail=FALSE)
pbetabinom <- function(x, size, prob, rho){
if(rho!=0)
VGAM::pbetabinom(x, size, prob, rho)
else
pbinom(x, size, prob)
}
dbetabinom <- function(x, size, prob, rho){
if(rho!=0)
VGAM::dbetabinom(x, size, prob, rho)
else
dbinom(x, size, prob)
}
dtrbetabinom <- function(x, size, prob, rho, xmin=0) {y <- dbetabinom(x,size,prob,rho) / (1-pbetabinom(xmin-1, size, prob, rho))
y[x<xmin] <- 0
return(y)}
ptrbetabinom <- function(x, size, prob, rho, xmin=0) {
pmin <- pbetabinom(xmin-1, size, prob, rho)
pmax(0,(pbetabinom(x,size,prob,rho) - pmin) / (1-pmin))}
mergeClusters <- function(clusters, deltaFreq=0.05){
if(nrow(clusters) <= 1) return(clusters)
h <- hclust(dist(clusters$proportion))
ct <- cutree(h, h=deltaFreq)
cp <- as.matrix(cophenetic(h))
Reduce("rbind",lapply(unique(ct), function(i) {
n_ssms <- sum(clusters$n_ssms[ct==i])
w <- max(cp[ct==i,ct==i])
data.frame(new.cluster=i, n_ssms=n_ssms, proportion=sum(clusters$proportion[ct==i]*clusters$n_ssms[ct==i])/n_ssms, width=w)
}
))
}
#' Compute possible Mutation copy number states
#' @param bb Copy number with consensus annotation meta data
#' @param clusters
#' @param purity
#' @param gender
#' @param isWgd
#' @return list of length nrow(bb), can be added to mcols(bb)
#'
#' @author mg14
#' @export
defineMcnStates <- function(bb, clusters, purity, gender='female', isWgd= FALSE){
P <- vector(mode='list', length(bb))
uniqueBB <- unique(bb)
overlaps <- findOverlaps(uniqueBB, bb)
majorCN <- split(bb$major_cn[subjectHits(overlaps)], queryHits(overlaps))
m <- bb$minor_cn #hack: minor_cn > 0 in male samples - Battenberg bug?
if(gender=='male')
m[as.character(seqnames(bb)) %in% c('X','Y')] <- 0
minorCN <- split(m[subjectHits(overlaps)], queryHits(overlaps))
h <- selectHits(overlaps, "first")
H <- selectHits(overlaps, "last")
cnNormal <- 2 - (gender=='male' & seqnames(uniqueBB)=="X" | seqnames(uniqueBB)=="Y")
# Fix cluster and purity discrepancies
clusters$proportion[which.max(clusters$proportion)] <- purity
cloneFreq <- split(bb$clonal_frequency[subjectHits(overlaps)], queryHits(overlaps))
cnStates <- matrix(0, nrow=10000, ncol=6)
colnames(cnStates) <- c("state","m","f","n.m.s","pi.m.s","s")
power.c <- rep(0, nrow(clusters))
deltaFreq <- 0.05 # merge clusters withing deltaFreq
for( i in seq_along(uniqueBB)){
if(!i %in% names(majorCN)) next
majcni <- majorCN[[as.character(i)]]
mincni <- minorCN[[as.character(i)]]
cfi <- cloneFreq[[as.character(i)]]
effCnTumor <- sum((majcni + mincni)*cfi)
effCnNormal <- as.numeric(cnNormal[i]) * (1-purity)
if(any(is.na(majcni))) next
mixFlag <- FALSE
subclonalGainFlag <- FALSE
clonalFlag <- TRUE
majdelta <- 0
mindelta <- 0
majanc <- majder <- majcni
minanc <- minder <- mincni
if(length(cfi)>1){ # multiple (subclonal) CN states, if so add clonal option (ie. mixture of both states), subclonal states only change by 1..delta(CN)
d <- colSums(abs(rbind(majcni, mincni) - c(1,1) * (1+ isWgd)))
derived <- d == max(d) ## derived state further from diploid/tetraploid
if(all(derived)) next
majanc <- majcni[!derived]
minanc <- mincni[!derived]
majder <- majcni[derived]
minder <- mincni[derived]
majdelta <- majcni[derived] - majcni[!derived]
mindelta <- mincni[derived] - mincni[!derived]
majcni <- c(min(majcni), # clonal, sub on allele that doesn't change
(majcni[!derived] + cfi[derived]/purity*majdelta), # clonal, sub on allele that does change
(majcni[derived] >0) + (majdelta > 0)) # subclonal, subs after or before CNA, m=1,delta
mincni <- c(min(mincni), (mincni[!derived] + cfi[derived]/purity*mindelta), (mincni[derived] >0) + (mindelta > 0))
majdelta <- c(0, cfi[derived]/purity*majdelta, majdelta)
mindelta <- c(0, cfi[derived]/purity*mindelta, mindelta)
cfi <- c(purity, purity, cfi[derived])
mixFlag <- c(FALSE, TRUE, FALSE)
clonalFlag <- c(TRUE,TRUE,FALSE)
subclonalGainFlag <- c(FALSE, FALSE, TRUE)
}
a <- sapply(clusters$proportion, function(p) all(abs(p-cfi) > deltaFreq)) # subclone(s) not coinciding with CN change
if(any(a)){ # assume subclones have derived from most abundant CN state
majcni <- c(majcni, rep(majcni[which.max(cfi)]>0, sum(a))+0)
mincni <- c(mincni, rep(mincni[which.max(cfi)]>0, sum(a))+0)
cfi <- c(cfi, clusters$proportion[a])
mixFlag <- c(mixFlag, rep(FALSE, sum(a)))
clonalFlag <- c(clonalFlag, rep(FALSE, sum(a)))
subclonalGainFlag <- c(subclonalGainFlag, rep(FALSE, sum(a)))
majdelta <- c(majdelta, rep(0,sum(a)))
mindelta <- c(mindelta, rep(0,sum(a)))
}
totcni <- majcni+mincni
if(all(totcni==0)) next
k <- 0
for( j in seq_along(majcni)){
if(majcni[j]==0 & mincni[j]==0) {
f <- m <- 0 # allele frequency
pi.m.s <- n.m.s <- 1
l <- 1
}else{
l <- 1:max(majcni[j], mincni[j]) # mincni>majcni can occur if minor allele changes subclonally
m <- l
n.m.s <- rep(1, length(l)) #multiplicity of cn states
if(!mixFlag[j]){ # single subclone, or no subclonal cn
f <- m * cfi[j] / (effCnTumor + effCnNormal)
if(mincni[j] > 0)
n.m.s[1:min(majcni[j], mincni[j])] <- 2
pi.m.s <- n.m.s/sum(n.m.s)
}else{ # coexisting cn subclones, use mixture
d <- if(majdelta[j] != 0) majdelta[j] else mindelta[j]
M <- max(mincni[j]*(mindelta[j]!=0), majcni[j]*(majdelta[j]!=0))
m <- (d > 0):M + (M-floor(M))
l <- seq_along(m)
f <- m *cfi[j] / (effCnTumor + effCnNormal) # Variant on major allele
n.m.s <- rep(1, length(l))
pi.m.s <- n.m.s/sum(n.m.s)
}
}
cnStates[k + l,"state"]=j
cnStates[k + l,"m"]=m
cnStates[k + l,"f"]=f
cnStates[k + l,"pi.m.s"]=pi.m.s
cnStates[k + l,"n.m.s"]=n.m.s
k <- k + length(l)
}
whichStates <- (1:k)[cnStates[1:k,"f"]>0]
# State probabilities - based on cell fractions
cfi.s <- unique(cfi)
pi.s <- sapply(cfi.s, function(p) ifelse(min(abs(clusters$proportion - p)) < deltaFreq, clusters$n_ssms[which.min(abs(clusters$proportion - p))], 1))
pi.s <- pi.s/sum(pi.s)
c.to.s <- sapply(cfi.s, function(p) ifelse(min(abs(clusters$proportion - p)) < deltaFreq, which.min(abs(clusters$proportion - p)), NA)) # map to cluster
s.to.c <- sapply(clusters$proportion, function(c) which.min(abs(cfi.s - c)))
cnStates[1:k,"s"] = as.numeric(factor(cfi, levels=cfi.s))[cnStates[1:k,"state"]]
timing_param <- cbind(cnStates[whichStates,,drop=FALSE], cfi=cfi[cnStates[whichStates,"state"]], pi.s=pi.s[cnStates[whichStates,"s"]], P.m.sX=NA,P.m.sX.lo=NA, P.m.sX.up=NA, T.m.sX=NA, T.m.sX.lo=NA, T.m.sX.up=NA, power.s=NA, power.m.s = NA,
majCN=majcni[cnStates[whichStates,"state"]], minCN=mincni[cnStates[whichStates,"state"]],
majDelta = majdelta[cnStates[whichStates,"state"]], minDelta = mindelta[cnStates[whichStates,"state"]],
clonalFlag=clonalFlag[cnStates[whichStates,"state"]], subclonalGainFlag=subclonalGainFlag[cnStates[whichStates,"state"]], mixFlag=mixFlag[cnStates[whichStates,"state"]], majCNanc=majanc, minCNanc=minanc, majCNder=majder, minCNder=minder)
P[[h[i]]] <- timing_param
if(H[i] != h[i]) P[[H[[i]]]] <- P[[h[i]]]
}
return(P)
}
#' Compute Mutation copy numbers
#' @param vcf A vcf object of ssnms. See VariantAnnotation::readVcf()
#' @param bb The copy number as a GRanges() object, meta data in consensus format. See loadBB()
#' @param clusters A data.frame with the cluster proportion and n_ssms
#' @param purity The purity of the samples
#' @param gender 'male' or 'female'
#' @param isWgd TRUE/FALSE
#' @param xmin min read support. Needed for power calculations
#' @param rho Dispersion parameter
#' @return A list with elements (D: Annotated Data.Frame, can be added to vcf object; P: Timing parameters to be added to CN Ranges; power.c power of each cluster).
#'
#' @author mg14
#' @export
computeMutCn <- function(vcf, bb, clusters, purity, gender='female', isWgd= FALSE, xmin=3, rho=0, n.boot=200){
n <- nrow(vcf)
D <- DataFrame(MutCN=rep(NA,n), MutDeltaCN=rep(NA,n), MajCN=rep(NA,n), MinCN=rep(NA,n), MajDerCN=rep(NA,n), MinDerCN=rep(NA,n), CNF=rep(NA,n), CNID =as(vector("list", n),"List"), pMutCN=rep(NA,n), pGain=rep(NA,n),pSingle=rep(NA,n),pSub=rep(NA,n), pMutCNTail=rep(NA,n))
P <- defineMcnStates(bb,clusters, purity, gender, isWgd)
if(n==0)
return(list(D=D, P=P))
altCount <- getAltCount(vcf)
tumDepth <- getTumorDepth(vcf)
names(altCount) <- names(tumDepth) <- NULL
# Match VCF and CN
overlaps <- findOverlaps(vcf, bb)
D[["CNID"]] <- as(overlaps, "List")
majorCN <- split(bb$major_cn[subjectHits(overlaps)], queryHits(overlaps))
m <- bb$minor_cn #hack: minor_cn > 0 in male samples - Battenberg bug?
if(gender=='male')
m[as.character(seqnames(bb)) %in% c('X','Y')] <- 0
minorCN <- split(m[subjectHits(overlaps)], queryHits(overlaps))
h <- selectHits(overlaps, "first")
H <- selectHits(overlaps, "last")
cnNormal <- 2 - (gender=='male' & seqnames(vcf)=="X" | seqnames(vcf)=="Y")
# Fix cluster and purity discrepancies
clusters$proportion[which.max(clusters$proportion)] <- purity
cloneFreq <- split(bb$clonal_frequency[subjectHits(overlaps)], queryHits(overlaps))
power.c <- rep(0, nrow(clusters))
deltaFreq <- 0.05 # merge clusters withing deltaFreq
boundaryHits <- countOverlaps(vcf, unique(bb)) > 1 # indels overlapping with CN boundaries
for(globalIt in 1:2){ # 2 iterations, fist local (ie per segment) fit, then global
for( i in which( (diff(c(-1, h)) !=0 | is.na(diff(c(-1, h)) !=0) ) & ! boundaryHits )){
if(!i %in% names(majorCN)) next
if(is.na(h[i])) next
if(if(i>1) h[i] != h[i-1] | is.na(h[i-1]) else TRUE){ #ie. new segment
hh <- which(h==h[i] & !is.na(altCount) &! is.na(tumDepth))
if(length(hh)==0) next
if(is.null(bb$timing_param[[h[i]]])){
cnStates <- P[[h[i]]]
if(is.null(cnStates)) next
whichStates <- 1:nrow(cnStates)
# State probabilities - based on cell fractions
cfi.s <- unique(cnStates[,"cfi"])
pi.s <- sapply(cfi.s, function(p) ifelse(min(abs(clusters$proportion - p)) < deltaFreq, clusters$n_ssms[which.min(abs(clusters$proportion - p))], 1))
pi.s <- pi.s/sum(pi.s)
c.to.s <- sapply(cfi.s, function(p) ifelse(min(abs(clusters$proportion - p)) < deltaFreq, which.min(abs(clusters$proportion - p)), NA)) # map to cluster
s.to.c <- sapply(clusters$proportion, function(c) which.min(abs(cfi.s - c)))
# Likelihood
L <- matrix(sapply(pmin(cnStates[whichStates,"f"],1), function(pp) dtrbetabinom(altCount[hh],tumDepth[hh],pp, rho=rho, xmin=pmin(altCount[hh],0)) + .Machine$double.eps), ncol=length(whichStates))
# Power
power.sm <- colMeans(matrix(sapply(pmin(cnStates[whichStates,"f"],1), function(pp) 1-ptrbetabinom(pmin(altCount[hh],xmin-1),tumDepth[hh],pp, rho=rho, xmin=0)), ncol=length(whichStates)), na.rm=TRUE)
if(globalIt==2){
P.m.sX <- P[[h[i]]][,"P.m.sX"]
power.s <- sapply(split(power.sm * P.m.sX, cnStates[whichStates,"s"]), sum) # Power for state
power.s[!is.na(c.to.s)] <- power.c[na.omit(c.to.s)]
power.m.s <- power.sm # Relative power of m states (local) conditioned on s (global).
for(s in unique(cnStates[whichStates,"s"])) power.m.s[cnStates[whichStates,"s"]==s] <- power.m.s[cnStates[whichStates,"s"]==s] / max(power.m.s[cnStates[whichStates,"s"]==s]) #power.s[s]
}else{ # First iteration
power.m.s <- power.sm
power.s <- rep(1,length(whichStates))
}
mm <- function(x) {
x <- factor(x)
if(nlevels(x) > 1) t(model.matrix( ~ x + 0)) else matrix(1, ncol=length(x))
}
# EM algorithm (mixture fitting) for pi
P.m.sX <- cnStates[whichStates,"pi.m.s"]
s.from.m <- mm(cnStates[whichStates,"s"]) # indicator matrix to map
for(em.it in 1:100){
P.xsm <- L * rep(pi.s[cnStates[whichStates,"s"]] * P.m.sX / power.m.s / power.s[cnStates[whichStates,"s"]], each=nrow(L)) # P(X,s,m)
P.sm.x <- P.xsm/rowSums(P.xsm) # P(s,m|Xi)
P.sm.X <- pmax(.Machine$double.xmin,colMeans(P.sm.x)) # P(s,m|X) / piState[cnStates[1:k,"state"]] / cnStates[1:k,"pi.m.s"]
if(em.it==100) break
P.s.X <- s.from.m %*% P.sm.X
P.m.sX <- P.sm.X / P.s.X[cnStates[whichStates,"s"]]
}
toTime <- function(cnStates, P.m.sX, s.m) {
mAnc <- cnStates[,"m"] - cnStates[,"minDelta"] - cnStates[,"majDelta"]
mAnc.s <- factor(paste(mAnc, cnStates[,"s"], sep="."))
n <- (mAnc <= cnStates[,"majCNanc"]) + (mAnc <= cnStates[,"minCNanc"] )
mAnc.s.from.m <- mm(x = mAnc.s)# indicator matrix to map
return((mAnc.s.from.m[mAnc.s,] %*% P.m.sX) / (s.m[cnStates[,"s"],] %*% (P.m.sX * mAnc)) * (cnStates[,"majCNanc"] + cnStates[,"minCNanc"]) / n)
}
T.m.sX <- toTime(cnStates, P.m.sX, s.from.m)
if(globalIt==1){
p <- (sapply(split(power.sm * P.m.sX, cnStates[whichStates,"s"]), sum) * nrow(L))[s.to.c]
if(!any(is.na(p) | is.nan(p)))
power.c <- power.c + p
}
# Bootstrapping for CIs
if(globalIt==2){
b.m.sX <- if(n.boot>0) sapply(1:n.boot, function(foo){
L <- rbind(L, rep(1e-3, each=ncol(L))) #add an uniformative row
L <- L[sample(1:nrow(L), replace=TRUE),,drop=FALSE]
P.m.sX <- cnStates[whichStates,"pi.m.s"]
for(em.it in 1:50){
P.xsm <- L * rep(pi.s[cnStates[whichStates,"s"]] * P.m.sX / power.m.s / power.s[cnStates[whichStates,"s"]], each=nrow(L)) # P(X,s,m)
P.sm.x <- P.xsm/rowSums(P.xsm) # P(s,m|Xi)
P.sm.X <- colMeans(P.sm.x) # P(s,m|X) / piState[cnStates[1:k,"state"]] / cnStates[1:k,"pi.m.s"]
P.s.X <- s.from.m %*% P.sm.X
P.m.sX <- P.sm.X / P.s.X[cnStates[whichStates,"s"]]
}
return(P.m.sX)
}) else NA
if(n.boot>0) try({
CI.m.sX <- apply(b.m.sX, 1, quantile, c(0.025, 0.975))
cnStates[,"P.m.sX.lo"] <- CI.m.sX[1,]
cnStates[,"P.m.sX.up"] <- CI.m.sX[2,]
B.m.sX <- toTime(cnStates = cnStates, P.m.sX = b.m.sX, s.m = s.from.m)
C.m.sX <- apply(B.m.sX, 1, quantile, c(0.025, 0.975))
cnStates[,"T.m.sX.lo"] <- C.m.sX[1,]
cnStates[,"T.m.sX.up"] <- C.m.sX[2,]
}, silent=TRUE)
}
P.sm.x[apply(is.na(P.sm.x)|is.nan(P.sm.x),1,any),] <- NA
cnStates[,"P.m.sX"] <- P.m.sX
cnStates[,"T.m.sX"] <- T.m.sX
cnStates[,"power.s"] <- power.s[cnStates[whichStates,"s"]]
cnStates[,"power.m.s"] <- power.m.s
}else{
cnStates <- bb$timing_param[[h[i]]]
if(is.null(cnStates)) next
P.sm.x <- posteriorMutCN(x=altCount[hh],n=tumDepth[hh], cnStates=cnStates, xmin=0, rho=rho)
}
# Tail probs
pMutCNTail <- matrix(sapply(pmin(cnStates[,"f"],1), function(pp) ptrbetabinom(altCount[hh],tumDepth[hh],pp, rho=rho, xmin=pmin(altCount[hh],xmin))), ncol=nrow(cnStates)) #%*% c(pi.s[cnStates[whichStates,"state"]] * P.m.sX)
P[[h[i]]] <- cnStates
if(H[i] != h[i]) P[[H[[i]]]] <- P[[h[i]]]
w <- apply(P.sm.x, 1, function(x) if(any(is.na(x))) NA else which.max(x) )
if(all(is.na(w))) next
D[hh, "pSub"] <- rowSums(P.sm.x[, !cnStates[,"clonalFlag"], drop=FALSE])
D[hh, "pGain"] <- rowSums(P.sm.x[, cnStates[,"clonalFlag"] & cnStates[,"m"] > 1.00001 + cnStates[,"majDelta"] + cnStates[,"minDelta"], drop=FALSE])
#D[hh, "pSingle"] <- rowSums(P.sm.x[, cnStates[1:k,"state"] %in% which(clonalFlag) & cnStates[1:k,"m"]<=1, drop=FALSE])
D[hh, "pSingle"] <- 1 - D[hh, "pSub"] - D[hh, "pGain"]
D[hh,"MutCN"] <- cnStates[w,"m"]
D[hh,"MutDeltaCN"] <- cnStates[w,"majDelta"] + cnStates[w,"minDelta"]
D[hh,"MinCN"] <- cnStates[w,"minCNanc"]
D[hh,"MajCN"] <- cnStates[w,"majCNanc"]
D[hh,"MinDerCN"] <- cnStates[w,"minCNder"]
D[hh,"MajDerCN"] <- cnStates[w,"majCNder"]
D[hh,"CNF"] <- cnStates[w,"cfi"]
D[hh,"pMutCN"] <- sapply(seq_along(w), function(i) P.sm.x[i,w[i]])
D[hh,"pMutCNTail"] <- sapply(seq_along(w), function(i) pMutCNTail[i,w[i]])
}
}
if(globalIt==1){
power.c <- power.c / sum(!is.na(D[,"pSub"]))
if(any(is.na(power.c) | power.c==0)) {
break # Cancel 2nd iteration
warning("Power calculation yielded NA, aborting.")
}
if(any(power.c > 1)) {
warning("Calculated power > 1, rounding down.")
power.c <- pmin(1, power.c)
}
}
}
return(list(D=D,P=P, power.c=power.c))
}
mcnHeader <- function() {
DataFrame(Number=c(1,1,1,1,1,1,1,1,".",1,1,1,1),Type=c("Float","Float","Integer","Integer","Integer","Integer","Float","Float","Integer","Float","Float","Float","Float"),
Description=c("Mutation copy number","Change in MutCN between ancestral and derived state","Major copy number (ancestral)","Minor copy number (ancestral)","Major copy number (derived)","Minor copy number (derived)","Copy number frequency (relative to all cancer cells)", "MutCN probability","BB segment ids","Posterior prob: Early clonal","Posterior prob: Late clonal","Posterior prob: Subclonal", "Tail prob of mixture model"),
row.names=c("MutCN","MutDeltaCN","MajCN","MinCN","MajDerCN","MinDerCN","CNF","pMutCN","CNID","pGain","pSingle","pSub", "pMutCNTail"))
}
addMutCn <- function(vcf, bb=allBB[[meta(header(vcf))["ID",]]], clusters=allClusters[[meta(header(vcf))["ID",]]]){
i = info(header(vcf))
info(header(vcf)) <- rbind(i, mcnHeader())
info(vcf) <- cbind(info(vcf), computeMutCn(vcf, bb, clusters)$D)
return(vcf)
}
classifyMutations <- function(x, reclassify=c("missing","all","none")) {
reclassify <- match.arg(reclassify)
if(nrow(x) ==0 )
return(factor(NULL, levels=c("clonal [early]", "clonal [late]", "clonal [NA]", "subclonal")))
if(class(x)=="CollapsedVCF")
x <- info(x)
.clsfy <- function(x) {
cls <- x$CLS
if(reclassify %in% c("missing", "none") &! is.null(cls)){
if(all(unique(cls) %in% c("early", "late", "clonal", "subclonal")))
cls <- factor(cls, levels=c("early", "late", "clonal", "subclonal"), labels=c("clonal [early]", "clonal [late]", "clonal [NA]", "subclonal"))
cls <- as.character(cls)
cls[cls=="NA"] <- NA
if(reclassify=="missing" & any(is.na(cls)))
cls[is.na(cls)] <- paste(factor(apply(as.matrix(x[is.na(cls), c("pGain","pSingle","pSub")]), 1, function(x) if(all(is.na(x))) NA else which.max(x)), levels=1:3, labels=c("clonal [early]", "clonal [late]","subclonal"))) ## reclassify missing
}else{
cls <- paste(factor(apply(as.matrix(x[, c("pGain","pSingle","pSub")]), 1, function(x) if(all(is.na(x))) NA else which.max(x)), levels=1:3, labels=c("clonal [early]", "clonal [late]","subclonal"))) ## reclassify missing
}
cls[x$pGain==0 & cls!="subclonal"] <- "clonal [NA]"
if(!is.null(x$MajCN))
cls[cls!="subclonal" & (x$MajCN == 1 | x$MinCN == 1) & abs(x$MutCN - x$MutDeltaCN -1) <= 0.0001] <- "clonal [NA]"
cls <- factor(cls, levels=c("clonal [early]", "clonal [late]", "clonal [NA]", "subclonal"))
}
cls <- .clsfy(x)
return(cls)
}
posteriorMutCN <- function(x,n, cnStates, xmin=3, rho=0.01){
whichStates <- 1:nrow(cnStates)
L <- matrix(sapply(pmin(cnStates[whichStates,"f"],1), function(pp) dtrbetabinom(x,n,pp, rho=rho, xmin=pmin(x,xmin)) + .Machine$double.eps), ncol=length(whichStates))
P.xsm <- L * rep(cnStates[whichStates,"pi.s"] * cnStates[whichStates,"P.m.sX"] / cnStates[whichStates,"power.s"] / cnStates[whichStates,"power.m.s"], each=nrow(L)) # P(X,s,m)
P.sm.x <- P.xsm/rowSums(P.xsm) # P(s,m|Xi)
return(P.sm.x)
}
loadBB <- function(file){
tab <- read.table(file, header=TRUE, sep='\t')
GRanges(tab$chromosome, IRanges(tab$start, tab$end), strand="*", tab[-3:-1])
}
pGainToTime <- function(vcf){
P <- matrix(NA, nrow=nrow(vcf), ncol=4, dimnames=list(NULL, c("pEarly","pLate","pClonal[NA]","pSub")))
P[,c("pEarly","pClonal[NA]","pSub")] <- as.matrix(info(vcf)[,c("pGain","pSingle","pSub")])
biAllelicGain <- (info(vcf)$MajCN > 1 & (info(vcf)$MinCN > 1 | info(vcf)$MinCN == 0) & ! ((info(vcf)$MajCN == 1 | info(vcf)$MinCN == 1) & abs(info(vcf)$MutCN - info(vcf)$MutDeltaCN -1) <= 0.0001))
w <- which(biAllelicGain)
P[w, "pLate"] <- P[w, "pClonal[NA]"]
P[w, "pClonal[NA]"] <- 0
P[which(!biAllelicGain),"pLate"] <- 0
return(P)
}
piToTime <- function(timing_param, type=c("Mono-allelic Gain","CN-LOH", "Bi-allelic Gain (WGD)")){
type <- match.arg(type)
evo <- NA
w <- timing_param[,"s"]==1 &! timing_param[,"mixFlag"] ## Clonal states, not mixture (CN subclonal)
M <- sum(w) ## Max multiplicity = Major copy number
m <- sum(w & timing_param[,"n.m.s"]==2) ## Minor CN
#evo <- paste0("1:1", paste0(2,":",m), if(M>2) paste0(3,":",) else "", collapse="->")
t <- timing_param[(M:(M-1)),c("T.m.sX","T.m.sX.lo","T.m.sX.up"), drop=FALSE] ## Timing M and M-1
if(nrow(t)==1) t <- rbind(t, NA)
if(!any(is.na(t))){
if(M==4) {
if(timing_param[M-1,"P.m.sX"] < 0.02){ ## No MCN 3
if(type=="CN-LOH"){ ## Hotfix for 4+0, treated at 1:1 -> 2:0 -> 4:0
t <- timing_param[c(M,M-2),c("T.m.sX","T.m.sX.lo","T.m.sX.up"), drop=FALSE]*c(1,0.5) ## Timing M and M-2
evo <- "1:1->2:0->4:0"
}
else if(type=="Bi-allelic Gain (WGD)"){
if(m==2) {## Hotfix for 4+2 regions, treated at 1:1 -> 2:1 -> 4:2
t <- timing_param[c(M,M-2),c("T.m.sX","T.m.sX.lo","T.m.sX.up"), drop=FALSE] ## Timing M and M-2
t[2,] <- pmax(0,2*t[2,] - t[1,])/3
evo <- "1:1->2:1->4:2"
} else if(m==4) {## Hotfix for 4+4 regions, treated at 1:1 -> 2:2 -> 4:4
t <- timing_param[c(M,M-2),c("T.m.sX","T.m.sX.lo","T.m.sX.up"), drop=FALSE]*c(1,0.5) ## Timing M and M-2
evo <- "1:1->2:2->4:4"
}
}
} else if(type=="Bi-allelic Gain (WGD)"){ ## Can't uniquely time second event
t[2,] <- NA
}
if(m==3) {
t[2,] <- NA ## Don'time secondary 4+3 for now, needs more work
}
} else {
if(M==3 & type=="Bi-allelic Gain (WGD)") {## Hotfix for 3+2 regions, treated at 1:1 -> 2:2 -> 3:2
t[2,] <- pmax(0,2*t[2,] - t[1,])
evo <- "1:1->2:2->3:2"
}
}
}
colnames(t) <- c("","lo","up")
t[,2] <- pmin(t[,1],t[,2])
t[,3] <- pmax(t[,1],t[,3])
t <- pmin(apply(t,2,cumsum),1) ## Times are actually deltas
if(M < 3) t[2,] <- NA
t[is.infinite(t)] <- NA
rownames(t) <- c("",".2nd")
return(c(t[1,],`.2nd`=t[2,])) ## Linearise
}
bbToTime <- function(bb, timing_param = bb$timing_param, pseudo.count=5){
sub <- duplicated(bb)
covrg <- countQueryHits(findOverlaps(bb, bb))
maj <- sapply(timing_param, function(x) if(length(x) > 0) x[1, "majCNanc"] else NA) #bb$major_cn
min <- sapply(timing_param, function(x) if(length(x) > 0) x[1, "minCNanc"] else NA) #bb$minor_cn
type <- sapply(seq_along(bb), function(i){
if(maj[i] < 2 | is.na(maj[i]) | sub[i] | (maj[i] > 4 & min[i] >= 2)) return(NA)
type <- if(min[i]==1){ "Mono-allelic Gain"
}else if(min[i]==0){"CN-LOH"}
else "Bi-allelic Gain (WGD)"
return(type)
})
time <- t(sapply(seq_along(bb), function(i){
if(sub[i] | is.na(type[i])) return(rep(NA,6))
else piToTime(timing_param[[i]],type[i])
}))
res <- data.frame(type=factor(type, levels=c("Mono-allelic Gain","CN-LOH","Bi-allelic Gain (WGD)")), time=time)
colnames(res) <- c("type","time","time.lo","time.up","time.2nd","time.2nd.lo","time.2nd.up")
# posthoc adjustment of CI's
res$time.up <- (pseudo.count + bb$n.snv_mnv * res$time.up)/(pseudo.count + bb$n.snv_mnv)
res$time.lo <- (0 + bb$n.snv_mnv * res$time.lo)/(pseudo.count + bb$n.snv_mnv)
res$time.2nd.up <- (pseudo.count + bb$n.snv_mnv * res$time.2nd.up)/(pseudo.count + bb$n.snv_mnv)
res$time.2nd.lo <- (0 + bb$n.snv_mnv * res$time.2nd.lo)/(pseudo.count + bb$n.snv_mnv)
res$time.star <- factor((covrg == 1) + (min < 2 & maj <= 2 | min==2 & maj==2) * (covrg == 1), levels=0:2, labels = c("*","**","***")) ## ***: 2+0, 2+1, 2+2; **: 2<n+1, {3,4}+2; *: subclonal gains
res$time.star[is.na(res$time)] <- NA
return(res)
}
simulateMutations <- function(bb, purity=max(bb$clonal_frequency, na.rm=TRUE), n=40, rho=0.01, xmin=3){
g <- (averagePloidy(bb)*purity + 2*(1-purity))
V <- list(VRanges())#VRanges()
for(i in which(!duplicated(bb)))
if(bb$n.snv_mnv[i]>1 & !is.null( bb$timing_param[[i]]))try({
cnStates <- bb$timing_param[[i]]
p <- cnStates[,"pi.s"]* if(!any(is.na(cnStates[,"P.m.sX"]))) cnStates[,"P.m.sX"] else cnStates[,"pi.m.s"]
pwr <- cnStates[,"power.m.s"]#(cnStates[,"power.s"] * cnStates[,"power.m.s"])
s <- sample(1:nrow(cnStates), size=pmax(1,ceiling(bb$n.snv_mnv[i] * (p %*% (1/pwr)))), prob=p, replace=TRUE)
f <- cnStates[s,"f"]
mu.c <- (bb$total_cn[i]*purity + 2*(1-purity))/g * n
c <- rnbinom(length(f), size=1/rho, mu=mu.c)
x <- rbetabinom(n=length(f), size=c, prob=f, rho=rho)
pos <- round(runif(length(f), min=start(bb)[i], max=end(bb)[i]))
w <- which(x>=xmin)
V[[i]] <- VRanges(seqnames=seqnames(bb)[i], IRanges(pos, width=1), ref="N", alt="A", totalDepth=c, altDepth=x)[w]
})
V <- do.call("c", V[!sapply(V, is.null)])
sampleNames(V) <- "SAMPLE"
v <- as(V, "VCF")
info(header(v)) <- rbind(info(header(v)),info(header(finalSnv[[1]]))[c("t_ref_count","t_alt_count"),])
info(v)$t_alt_count <- altDepth(V)
info(v)$t_ref_count <- totalDepth(V) - altDepth(V)
return(v)
}
All basic functions
# TODO: Add comment
#
# Author: mg14
###############################################################################
library(Rsamtools)
library(VariantAnnotation)
vcfPath <- '../final/final_consensus_12oct_passonly/snv_mnv'
basePath <- '../dp/20170129_dpclust_finalConsensusCopynum_levels_a_b_c_d'
dpPath <- paste0('../final/consensus_subclonal_reconstruction_20170325')
#CANCERGENES <- read.table('../ref/cancer_genes.txt')$V1
purityPloidy <- read.table( '../final/consensus.20170218.purity.ploidy.txt', header=TRUE, row.names=1)
#colnames(purityPloidy) <- c("purity","ploidy")
cnPath <- paste0(basePath,'/4_copynumber/')
bbPath <- paste0(basePath,'/4_copynumber/')
allGender <- read.table('../final/2016_12_09_inferred_sex_all_samples.txt', header=TRUE, sep='\t')
allGender <- allGender[!duplicated(allGender$tumourid) & allGender$tumourid != 'tumourid',]
#write.table(gender,'../gender/2016_12_09_inferred_sex_all_samples_CORRECTED_MG.txt', row.names=FALSE, col.names=TRUE, sep='\t', quote=FALSE)
rownames(allGender) <- allGender$tumourid
addTNC <- function(vcf){
r = "../ref/genome.fa.gz" #meta(header(v))["reference",]
if(!"TNC" %in% rownames(header(vcf)@header$INFO)){
tnc=scanFa(file=r, resize(granges(vcf), 3,fix="center"))
i = header(vcf)@header$INFO
info(header(vcf)) <- rbind(i, DataFrame(Number=1,Type="String",Description="Trinucleotide context", row.names="TNC"))
info(vcf)$TNC <- as.character(tnc)
}
return(vcf)
}
dpFiles <- dir(dpPath, pattern="_subclonal_structure.txt", recursive=TRUE)
bbFiles <- dir(bbPath, pattern="_segments.txt", recursive=TRUE)
wccTable <- read.table("../final/wcc_consensus_values_9_12.tsv", header=TRUE, sep='\t')
d <- data.frame(cluster=wccTable$sc_n, n_ssms=wccTable$consensus_mutation_number, proportion = round(wccTable$consensus_cluster_cp,3))
d[d$cluster==1,"proportion"] <- wccTable[d$cluster==1,"purity"]
wccClusters <- split(d, wccTable$sid)
wccPurity <- d[d$cluster==1,"proportion"]
#plot(wccPurity, purityPloidy[,"purity"])
loadClusters <- function(ID){
file <- paste0(dpPath,"/",grep(paste0(ID,"[[:punct:]]"), dpFiles, value=TRUE, perl=TRUE))
if(grepl(".gz", file))
file <- gzfile(file)
read.table(file, header=TRUE, sep="\t")
}
loadConsensusClusters <- function(ID){
file <- paste0(dpPath,"/",grep(paste0(ID,"[[:punct:]]"), dpFiles, value=TRUE, perl=TRUE))
if(grepl(".gz", file))
file <- gzfile(file)
read.table(file, header=TRUE, sep="\t")
}
consensusClustersToOld <- function(clusters){
data.frame(cluster=clusters$cluster, n_ssms=clusters$n_snvs, proportion=clusters$fraction_total_cells)
}
parseRegion <- function(regions){
chr <- regmatches(regions, regexpr("^.+(?=:)",regions,perl=TRUE))
start <- as.numeric(regmatches(regions, regexpr("(?<=:)[0-9]+(?=-)",regions,perl=TRUE)))
end <- as.numeric(regmatches(regions, regexpr("(?<=-)[0-9]+$",regions,perl=TRUE)))
data.frame(chr,start,end)
}
loadCn <- function(ID){
file <- paste0(cnPath, "/",ID,"_timingsMle.txt")
tab <- read.table(file, header=TRUE, sep=" ")
reg <- parseRegion(tab$ascatId)
GRanges(tab$chr, IRanges(reg$start,reg$end), strand="*", tab[-1])
}
loadBB <- function(ID){
t <- try({
file <- grep(paste0(ID,"[[:punct:]]"), dir(bbPath, pattern="segments.txt", recursive=TRUE, full.names=TRUE), value=TRUE)
if(grepl(".gz", file))
file <- gzfile(file)
tab <- read.table(file, header=TRUE, sep='\t')
GRanges(tab$chromosome, IRanges(tab$start, tab$end), strand="*", tab[-3:-1])
})
if(class(t)=='try-error') GRanges(copy_number=numeric(), major_cn=numeric(), minor_cn=numeric(), clonal_frequency=numeric()) else t
}
loadConsensusCNA <- function(ID, purity=1, path="../final/consensus.20170119.somatic.cna.annotated"){
file <- grep(paste0(ID,"[[:punct:]]"), dir(path, pattern="cna.annotated.txt", recursive=TRUE, full.names=TRUE), value=TRUE)
if(grepl(".gz", file))
file <- gzfile(file)
tab <- read.table(file, header=TRUE, sep='\t')
subclonalIndex <- !is.na(tab$total_cn) & !is.na(tab$battenberg_nMaj2_A) & !is.na(tab$battenberg_nMin2_A) & !is.na(tab$battenberg_frac2_A) & (tab$battenberg_nMaj1_A == tab$major_cn & tab$battenberg_nMin1_A == tab$minor_cn | tab$battenberg_nMaj2_A == tab$major_cn & tab$battenberg_nMin2_A == tab$minor_cn)
ix <- c(1:nrow(tab), which(subclonalIndex))
gr <- GRanges(tab$chromosome, IRanges(tab$start, tab$end), strand="*", clonal_frequency=purity, tab[-3:-1])[ix]
if(any(subclonalIndex)){
gr$clonal_frequency[which(subclonalIndex)] <- tab$battenberg_frac1_A[subclonalIndex] * purity
gr$major_cn[which(subclonalIndex)] <- tab$battenberg_nMaj1_A[subclonalIndex]
gr$minor_cn[which(subclonalIndex)] <- tab$battenberg_nMin1_A[subclonalIndex]
gr$total_cn[which(subclonalIndex)] <- tab$battenberg_nMaj1_A[subclonalIndex] + tab$battenberg_nMin1_A[subclonalIndex]
gr$clonal_frequency[-(1:nrow(tab))] <- tab$battenberg_frac2_A[subclonalIndex] * purity
gr$total_cn[-(1:nrow(tab))] <- tab$battenberg_nMaj2_A[subclonalIndex] + tab$battenberg_nMin2_A[subclonalIndex]
gr$major_cn[-(1:nrow(tab))] <- tab$battenberg_nMaj2_A[subclonalIndex]
gr$minor_cn[-(1:nrow(tab))] <- tab$battenberg_nMin2_A[subclonalIndex]
}
seqlevels(gr) <- c(1:22, "X","Y")
sort(gr)
}
refFile = "../ref/genome.fa.gz" #meta(header(v))["reference",]
refLengths <- scanFaIndex(file=refFile)
chrOffset <- cumsum(c(0,as.numeric(width(refLengths))))
names(chrOffset) <- c(seqlevels(refLengths), "NA")
averagePloidy <- function(bb) {
c <- if(!is.null(bb$copy_number)) bb$copy_number else bb$total_cn
sum(width(bb) * c * bb$clonal_frequency, na.rm=TRUE) / sum(width(bb) * bb$clonal_frequency, na.rm=TRUE)
}
averageEvenPloidy <- function(bb){
sum(width(bb) * (!bb$major_cn %% 2 & !bb$minor_cn %% 2) * bb$clonal_frequency, na.rm=TRUE) / sum(width(bb) * bb$clonal_frequency, na.rm=TRUE)
}
getTumorCounts <- function(vcf){
sapply(grep("(F|R).Z", names(geno(vcf)), value=TRUE), function(i) geno(vcf)[[i]][,"TUMOUR"])
}
getTumorDepth <- function(vcf){
if("t_alt_count" %in% colnames(info(vcf))){ ## consensus data, snv and indel
info(vcf)$t_alt_count + info(vcf)$t_ref_count
}else{ ## older data
if("FAZ" %in% rownames(geno(header(vcf)))){
rowSums(getTumorCounts(vcf))
}else{
geno(vcf)$DEP[,2]
}
}
}
getAltCount <- function(vcf){
if("t_alt_count" %in% colnames(info(vcf))){ ## consensus data, snv and indel
info(vcf)$t_alt_count
}else{ ## older formats
if("FAZ" %in% rownames(geno(header(vcf)))){ ## ie subs
c <- getTumorCounts(vcf)
t <- c[,1:4] + c[,5:8]
colnames(t) <- substring(colnames(t),2,2)
a <- as.character(unlist(alt(vcf)))
a[!a%in%c('A','T','C','G')] <- NA
sapply(seq_along(a), function(i) if(is.na(a[i])) NA else t[i, a[i]])
}
else{ ## ie indel
#(geno(vcf)$PP + geno(vcf)$NP + geno(vcf)$PB + geno(vcf)$NB)[,"TUMOUR"]
geno(vcf)$MTR[,2]
}
}
}
mergeClusters <- function(clusters, deltaFreq=0.05){
if(nrow(clusters) <= 1) return(clusters)
h <- hclust(dist(clusters$proportion), members=clusters$n_ssms)
ct <- cutree(h, h=deltaFreq)
cp <- as.matrix(cophenetic(h))
Reduce("rbind",lapply(unique(ct), function(i) {
n_ssms <- sum(clusters$n_ssms[ct==i])
w <- max(cp[ct==i,ct==i])
data.frame(new.cluster=i, n_ssms=n_ssms, proportion=sum(clusters$proportion[ct==i]*clusters$n_ssms[ct==i])/n_ssms, width=w)
}
))
}
removeSuperclones <- function(clusters, min.frac=0.1, delta.prop=0.1) {
m <- which(clusters$proportion == max(clusters$proportion[clusters$n_ssms >= 0.1 * sum(clusters$n_ssms)]))
w <- clusters$proportion >= clusters$proportion[m] - delta.prop
if(sum(w)>1){
cl <- as.data.frame(rbind(if(any(!w)) clusters[!w,,drop=FALSE], if(any(w)) colSums(clusters[w,,drop=FALSE]*(clusters[w,"n_ssms"]/sum(clusters[w,"n_ssms"])))))
cl[nrow(cl),"n_ssms"] <- sum(clusters[w,"n_ssms"])
clusters <- cl
}
return(clusters)
}
clustersFromBB <- function(bb){
w <- bb$clonal_frequency == max(bb$clonal_frequency, na.rm=TRUE) | bb$clonal_frequency < 0.5 * max(bb$clonal_frequency, na.rm=TRUE)
t <- table(bb$clonal_frequency[w])
cl <- data.frame(cluster=seq_along(t), n_ssms=as.numeric(t), proportion=as.numeric(names(t)))
mergeClusters(cl, deltaFreq=0.2)
}
mergeClustersByMutreadDiff = function(clusters, purity, ploidy, vcf_snv, min_read_diff) {
calc_exp_mutreads_ccf = function(ccf, purity, ploidy, mean_depth) {
return(ccf / (purity*ploidy + (1-purity)*2) * mean_depth)
}
clusters_new = clusters
exp_reads = sapply(clusters$ccf, calc_exp_mutreads_ccf, purity=purity, ploidy=ploidy, mean_depth=mean(getTumorDepth(vcf_snv), na.rm=T))
ccf_diff = exp_reads[1:(length(exp_reads)-1)] - exp_reads[2:length(exp_reads)]
if (any(ccf_diff < min_read_diff)) {
# Iteratively merge a pair of clusters untill no more pairs within distance can be found
merged = T
while(merged) {
merged = F
exp_reads = sapply(clusters_new$ccf, calc_exp_mutreads_ccf, purity=purity, ploidy=ploidy, mean_depth=mean(getTumorDepth(vcf_snv), na.rm=T))
ccf_diff = exp_reads[1:(length(exp_reads)-1)] - exp_reads[2:length(exp_reads)]
to_merge = which(ccf_diff < min_read_diff)
if (length(to_merge)==0) {
merged = F
break
} else {
i = to_merge[1]
clusters_new$ccf[i] = sum(clusters_new$ccf[c(i, i+1)]*clusters_new$n_ssms[c(i, i+1)]) / sum(clusters_new$n_ssms[c(i, i+1)])
clusters_new$n_ssms[i] = sum(clusters_new$n_ssms[c(i, i+1)])
clusters_new = clusters_new[-(i+1),]
merged = T
}
if (nrow(clusters_new)==1) {
merged = F
break
}
}
}
clusters_new$proportion = clusters_new$ccf * purity
# sorting and renumbering clusters
clusters_new = clusters_new[with(clusters_new, order(proportion, decreasing=T)),]
clusters_new$cluster = 1:nrow(clusters_new)
return(clusters_new)
}
probGenotype <- function(vcf){
dg <- factor(paste(unlist(info(vcf)$DG)), levels=c("NA",as.character(CANCERGENES)))
P <- pGainToTime(vcf)
G <- matrix(0, ncol=5, nrow=nlevels(dg), dimnames=list(levels(dg), c(colnames(P),"NA")))
t <- table(dg)
for(g in names(t[t>0]))
G[g,] <- c(colSums(P[dg==g,,drop=FALSE],na.rm=TRUE), "NA"=sum(is.na(P[dg==g,1])))
return(G)
}
probGenotypeTail <- function(vcf){
dg <- factor(paste(unlist(info(vcf)$DG)), levels=c("NA",as.character(CANCERGENES)))
P <- info(vcf)$pMutCNTail
G <- rep(NA, nlevels(dg))
names(G) <- levels(dg)
t <- table(dg)
for(g in names(t[t>0]))
G[g] <- mean(P[dg==g,drop=FALSE],na.rm=TRUE)
return(G)
}
getGenotype <- function(vcf, reclassify='missing', ...){
w <- c(TRUE,diff(start(vcf)) != 1)
cls <- classifyMutations(vcf, reclassify=reclassify)
t <- info(vcf)$TCN
if(is.null(t))
t <- info(vcf)$MinCN + info(vcf)$MajCN
hom <- factor(info(vcf)$MutCN==t, levels=c(TRUE,FALSE))
dg <- factor(unlist(info(vcf)$DG), levels=as.character(CANCERGENES))
table(gene=dg[w], class=cls[w], homozygous=hom[w], ...)
}
tryExceptNull <- function(x) if(class(x)=="try-error") GRanges() else x
loadVcf <- function(ID){
file <- dir(vcfPath, pattern=paste0(ID, ".+somatic.snv_mnv.TNC.vcf.bgz$"), full.names=TRUE)
pos <- loadPositions(ID)
vcf <- readVcf(file, genome="GRCh37") #, param=ScanVcfParam(which=pos))
f <- findOverlaps(pos, vcf, select="first")
vcf <- vcf[na.omit(f)]
vcf <- addDriver(vcf, CANCERGENES)
i = header(vcf)@header$INFO
info(header(vcf)) <- rbind(i, DataFrame(Number=1,Type="Numeric",Description="DP cluster", row.names="DPC"))
i = header(vcf)@header$INFO
info(header(vcf)) <- rbind(i, DataFrame(Number=1,Type="Numeric",Description="DP cluster probability", row.names="DPP"))
info(vcf)$DPC <- pos$cluster[!is.na(f)]
info(vcf)$DPP <- pos$likelihood[!is.na(f)]
vcf
}
isDeamination <- function(vcf) grepl("(A.CG)|(T..CG)", paste(as.character(unlist(alt(vcf))),vcf@info$TNC))
isDeaminationNoUV <- function(vcf) grepl("(A.CG[C,T])|(T.[A,G]CG)", paste(as.character(unlist(alt(vcf))),vcf@info$TNC))
testDriver <- function(vcf) sapply(info(vcf)$VC, function(x) if(length(x) ==0) FALSE else any(x %in% c('nonsense','missense','ess_splice','frameshift','inframe','cds_distrupted')))
addDriver <- function(vcf, mutsigDrivers){
i = header(vcf)@header$INFO
info(header(vcf)) <- rbind(i, DataFrame(Number=1,Type="String",Description="Driver gene", row.names="DG"))
if(nrow(vcf)==0){
info(vcf)$DG <- CharacterList()
return(vcf)
}
r <- paste(paste0("^",mutsigDrivers,"(?=\\|)"), collapse="|")
rowIdx <- grepl(r, info(vcf)$VD, perl=TRUE) & testDriver(vcf)
g <- sapply(info(vcf)$VD, function(x) sub("\\|.+","", x))
d <- ifelse(rowIdx,g,character(0))
#d[is.na(d)] <- character(0)
info(vcf)$DG <- as(d,"CharacterList")
vcf
}
loadAssignment <- function(ID){
file <- paste0(dpPath,"/",ID,"_DPoutput_1250iters_250burnin/",ID,"_DP_and_cluster_info.txt")
read.table(file, header=TRUE, sep="\t")
}
addAssignment <- function(vcf, ID){
a <- loadAssignment(ID)
i = header(vcf)@header$INFO
info(header(vcf)) <- rbind(i, DataFrame(Number=ncol(a),Type="Numeric",Description="DP probability", row.names="DPP"))
info(vcf)$DPP <- as.matrix(a)
vcf
}
loadPositions <- function(ID){
file <- gzfile(paste0(dpPath,"/",ID,"_mutation_assignments.txt.gz"))
tmp <- read.table(file, header=TRUE, sep="\t")
#GRanges(tmp$chr, IRanges(tmp$start+1, tmp$end), cluster=tmp$cluster, likelihood=tmp$likelihood)
GRanges(tmp$chr, IRanges(tmp$pos, width=1), cluster=tmp$cluster)
}
tncToPyrimidine <- function(vcf){
a <- unlist(alt(vcf))
r <- ref(vcf)
tnc <- DNAStringSet(info(vcf)$TNC)
rc <- grepl("A|G", r)
tnc[rc] <- reverseComplement(tnc[rc])
a[rc] <- reverseComplement(a[rc])
t <- paste0(substr(tnc,1,1), "[",substr(tnc,2,2), ">",a, "]", substr(tnc,3,3))
n <- c("A","C","G","T")
f <- paste0(rep(n, each=4), "[", rep(c("C","T"), each=96/2), ">", c(rep(c("A","G","T"), each=48/3), rep(c("A","C","G"), each=48/3)), "]", n)
factor(t, levels=f)
}
applyPigeonHole <- function(ID){
c <- loadClusters(ID)
p <- purityPloidy[ID,"purity"]
mcf <- c$proportion#*p
l <- sapply(1:length(mcf), function(i) mcf[i] > pmax(0,1-mcf))
w <- which(l & upper.tri(l), arr.ind=TRUE)
cbind(c$cluster[w[,1]], c$cluster[w[,2]])
}
reduceToCoverRelations <- function(rel){
if(nrow(rel) ==0) return(rel)
n <- max(rel)
P <- matrix(FALSE,n,n)
for(i in 1:nrow(rel))
P[rel[i,1],rel[i,2]] <- TRUE
for(i in 1:n){
q <- list()
visit <- logical(n)
for(j in 1:n)
if(P[i,j])
q <- c(q,j)
while(length(q)>0){
j <- q[[1]]
q[[1]] <- NULL
for(k in 1:n){
if(P[j,k] & !visit[k]){
visit[k] <- TRUE
q <- c(q,k)
if(P[i,k])
P[i,k] <- FALSE
if(P[k,i])
stop("Error.")
}
}
}
}
which(P, arr.ind=TRUE)
}
cnWeights <- function(vcf){
t <- if(is.null(info(vcf)$TCN)) (info(vcf)$MajCN + info(vcf)$MinCN) else info(vcf)$TCN
info(vcf)$MutCN / t
}
branchLengths <- function(vcf, type=c("all","deamination")){
type <- match.arg(type)
if(type=="deamination")
w <- isDeamination(vcf)
else
w <- rep(TRUE, nrow(vcf))
cnw <- cnWeights(vcf)
u <- allClusters[[meta(header(vcf))$META["ID",1]]]$cluster
b <- sapply(u, function(c) sum(2*cnw * (info(vcf)$DPC==c & w), na.rm=TRUE))
#if(length(b)==0) b <- rep(0, length(u))
names(b) <- u
return(b)
}
avgWeights <- function(vcf, type=c("all","deamination")){
type <- match.arg(type)
if(type=="deamination")
w <- isDeamination(vcf)
else
w <- rep(TRUE, nrow(vcf))
cnw <- cnWeights(vcf)
mean(2*cnw[w], na.rm=TRUE)
}
predictRealTime <- function(x, signatures=snmf$snmfFit$P[-1,]){
snmf$snmfFit$P[1,1] / snmf$weight * snmf$nmSolve(x, signatures, maxIter=100)[1,]
}
#' ### Compute graphs (posets)
toGraph <- function(edgelist, branch.length, edge.labels, node.labels=1:max(edgelist)){
g <- graph.edgelist(edgelist)
E(g)$weight <- branch.length
E(g)$name <- edge.labels
V(g)$name <- node.labels
return(g)
}
na.rm <- function(x) x[!is.na(x)]
plotPoset <- function(g){
c <- colorRampPalette(brewer.pal(9, "Spectral"))(10)
plot(g, layout=layout.reingold.tilford(g), edge.label=E(g)$name, vertex.size = 25*pmin(1,V(g)$size), edge.width=E(g)$weight/100)
}
#' Distance in poset
posetDist <- function(g) {
e <- get.edgelist(g)
w <- c(0,E(g)$weight)
names(w) <- c("Germline", e[,2])
d <- shortest.paths(g, mode='out')
d <- d - rep(w[colnames(d)], each=length(w))/2
diag(d) <- NA
d
}
getMutationCluster <- function(allMutations, vcf){
m <- match(allMutations, unlist(info(vcf)$DG))
info(vcf)$DPC[m]
}
distAsRange <- function(g){
e <- get.edgelist(g)
w <- c(0,E(g)$weight)
names(w) <- c("Germline", e[,2])
d <- shortest.paths(g, mode='out')
y <- shift(IRanges(-w[colnames(d)],0), d["Germline", ])
names(y) <- paste0(colnames(d), ", genes=",E(g)$name[match(colnames(d), e[,2])])
y
}
nmSolve <- function(D, P, maxIter = 500, tol=1e-3) {
n <- nrow(D)
m <- ncol(D)
s <- ncol(P)
tP <- t(P)
rP <- rep(colSums(P), m)
D <- as.matrix(D)
E1 <- E2 <- matrix(runif(s * m, 1e-3, 1), ncol = m)
err <- 2*tol
iter <- 1
while (iter < maxIter & err > tol) {
E1 <- E2
E2 <- E1 * (tP %*% (D/(P %*% (E1 + .Machine$double.eps))))/rP
iter <- iter + 1
err <- mean(abs(E2 - E1)/(E1+.Machine$double.eps), na.rm=TRUE)
if(iter %% 100 == 0) cat(round(-log10(err)))
}
cat("\n")
if(iter == maxIter) warning(paste("No convergence after",iter, "iterations."))
E2
}
wnmSolve <- function(D, P, weights = rep(0, ncol(P)), maxIter = 500, tol=1e-3) {
D <- as.matrix(D)
D <- rbind(D, matrix(weights, ncol=ncol(D), nrow=ncol(P)))
P <- rbind(P, diag(rep(1,ncol(P))))
n <- nrow(D)
m <- ncol(D)
s <- ncol(P)
tP <- t(P)
rP <- rep(colSums(P), m)
E1 <- E2 <- matrix(runif(s * m, 1e-3, 1), ncol = m)
err <- 2*tol
iter <- 1
while (iter < maxIter & err > tol) {
E1 <- E2
E2 <- E1 * (tP %*% (D/(P %*% (E1 + .Machine$double.eps))))/rP
iter <- iter + 1
err <- mean(abs(E2 - E1)/(E1+.Machine$double.eps), na.rm=TRUE)
if(iter %% 100 == 0) cat(round(-log10(err)))
}
cat("\n")
if(iter == maxIter) warning(paste("No convergence after",iter, "iterations."))
E2
}
wgdTest <- function(vcf){
id <- meta(header(vcf))$META["ID",1]
bb <- allBB[[id]]
ix <- which(bb$copy_number==4 & bb$minor_cn==2)
v <- vcf[vcf %over% bb[ix]]
#w <- sum(as.numeric(width(reduce(bb[ix]))))
t <- table(info(v)$MutCN, info(v)$TCN, as.character(seqnames(v)), info(v)$DPC)
}
#' Power
power <- function(f,n, theta=6.3, err=1e-4) if(any(is.na(c(f,n,theta,err)))) NA else sum((log10(dbinom(0:n, n, 0:n/n) / dbinom(0:n,n,err)) > theta) * dbinom(0:n,n,f))
testIndel <- function(vcf) sapply(info(vcf)$VC, function(x) if(length(x) ==0) FALSE else any(x %in% c('frameshift','inframe','ess_splice','SO:0001577:complex_change_in_transcript', 'SO:0001582:initiator_codon_change', 'splice_region')))
asum <- function(x, dim) apply(x, setdiff(seq_along(dim(x)), dim), sum)
#' official driver file
#d <- lapply(2:3, function(sheet) xlsx::read.xlsx2(file="../ref/TableS2_driver_point_mutations_annotation.xlsx", sheetIndex=sheet, colIndex=1:22, stringsAsFactors=FALSE, na.char="NaN"))
#colnames(d[[2]]) <- colnames(d[[1]])
#drivers <- do.call("rbind",d)
#drivers[drivers=="NaN" | drivers==""] <- NA
#drivers <- as.data.frame(sapply(drivers, function(x) if(all(!is.na(as.numeric(x[!is.na(x)])))) as.numeric(x) else x, simplify=FALSE))
finalData <- read.table("../final/ref/release_may2016.v1.4.tsv", header=TRUE, sep="\t")
#r <- gsub("-","",drivers$ref)
#i <- grepl("-",drivers$ref) | grepl("-",drivers$alt) #drivers$mut_type=="indel" # need to fix indels
#r[i] <- paste0("N",r[i])
#a <- gsub("-","",drivers$alt)
#a[i] <- paste0("N",a[i])
#p <- drivers$pos
#p[i & !grepl("-", drivers$ref)] <- p[i & !grepl("-", drivers$ref)]-1
#m <- sapply(levels(drivers$sample), function(x) grep(x, finalData$sanger_variant_calling_file_name_prefix))
#finalDrivers <- VRanges(seqnames = drivers$chr, ranges=IRanges(p, width = width(r)), ref=DNAStringSet(r), alt=DNAStringSet(a), sampleNames = finalData$icgc_donor_id[m[drivers$sample]])
#mcols(finalDrivers) <- cbind(sample=drivers$sample, samples=finalData$sanger_variant_calling_file_name_prefix[m[drivers$sample]], ID= drivers$gene_id, drivers[,8:22], mut_type=ifelse(i, "indel","snv"))
#save(finalDrivers, file="../ref/TableS2_driver_point_mutations_annotation.RData")
load(file="../ref/TableS2_driver_point_mutations_annotation.RData")
CANCERGENES <- levels(finalDrivers$ID)
matchDrivers <- function(vcf, finalDrivers) {
ID <- meta(header(vcf))$META["ID",1]
d <- finalDrivers[grep(ID, finalDrivers$samples)]
g <- factor(rep(NA,nrow(vcf)), levels = levels(d$ID))
if(length(d)==0)
return(g)
overlaps <- findOverlaps(vcf, d)
g[queryHits(overlaps)] <- d$ID[subjectHits(overlaps)]
return(g)
}
addFinalDriver <- function(vcf, finalDrivers){
i = header(vcf)@header$INFO
info(header(vcf)) <- rbind(i, DataFrame(Number=1,Type="String",Description="Driver mutation", row.names="DG"))
info(vcf)$DG <- factor(rep(NA,nrow(vcf)), levels = levels(finalDrivers$ID))
if(nrow(vcf)==0)
return(vcf)
g <- matchDrivers(vcf = vcf, finalDrivers = finalDrivers)
info(vcf)$DG <- g
return(vcf)
}
clinicalData <- read.table("../ref/pcawg_donor_clinical_August2016_v9.tsv", header=TRUE, sep="\t", comment="", quote="")
load("../ref/Sarcs_ages.RDa")
for(x in Sarcs_age)
clinicalData$donor_age_at_diagnosis[match(as.character(x$icgc_donor_id), as.character(clinicalData$icgc_donor_id))] <- as.numeric(x$Age)
rm(Sarcs_age)
specimenData <- read.table("../ref/pcawg_specimen_histology_August2016_v9.tsv", header=TRUE, sep="\t", comment="", quote="")
specimenData$histology_abbreviation <- sub("CA$","Ca",specimenData$histology_abbreviation)
s <- strsplit(as.character(finalData$sanger_variant_calling_file_name_prefix),",")
sample2donor <- as.character(finalData$icgc_donor_id[unlist(sapply(seq_along(s), function(i) rep(i, length(s[[i]]))))])
names(sample2donor) <- unlist(s)
s <- unlist(strsplit(as.character(finalData$sanger_variant_calling_file_name_prefix),","))
sample2icgc <- unlist(strsplit(as.character(finalData$tumor_wgs_icgc_sample_id),",")) #as.character(finalData$tumor_wgs_icgc_sample_id[unlist(sapply(seq_along(s), function(i) rep(i, length(s[[i]]))))])
names(sample2icgc) <- s#unlist(s)
donor2type <- factor(specimenData$histology_abbreviation, levels=c(sort(unique(specimenData$histology_abbreviation))[-1], ""))
donor2type <- as.character(donor2type)
donor2type[donor2type=="Kidney-RCC" & grepl("clear cell", specimenData$histology_tier4)] <- "Kidney-CCRCC"
donor2type[donor2type=="Kidney-RCC" & grepl("papillary",specimenData$histology_tier4)] <- "Kidney-PapRCC"
donor2type <- factor(donor2type)
names(donor2type) <- specimenData$icgc_donor_id
levels(donor2type)[levels(donor2type)==""] <- "Other/NA"
t <- read.table("../ref/tumour_subtype_consolidation_map.tsv - Unique List of Tumour Types_August.tsv", sep='\t', header=TRUE, comment="")
c <- as.character(t$`Color..RGB.code.`)
names(c) <- sub("CA$","Ca",t$`Abbreviation`)
c <- c[c != "" & !duplicated(names(c))]
tissueColors <- c(table(donor2type))*NA
tissueColors[names(c)] <- c
tissueColors["Lymph-CLL"] <- "#F4A35D"
tissueColors["Kidney-CCRCC"] <- tissueColors["Kidney-RCC"]
tissueColors["Kidney-PapRCC"] <- "#E53E00"
tissueColors <- tissueColors[levels(donor2type)]
tissueBorder <- c("white","black")[names(tissueColors) %in% c("Lung-SCC","Lung-AdenoCa")+1]
names(tissueBorder) <- names(tissueColors)
tissueLines <- tissueColors
tissueLines[names(tissueColors) %in% c("Lung-SCC","Lung-AdenoCa")] <- "black"
tissueLty <- c(1,1)[names(tissueColors) %in% c("Lung-SCC","Lung-AdenoCa")+1]
names(tissueLty) <- names(tissueColors)
tissueLty["Lung-SCC"] <- 5
tissueLty["Lung-AdenoCa"] <- 4
tissueCex <- tissueLty
tissueCex[grep("Lung", names(tissueCex))] <- 0.8
averageHom <- function(bb){
sum(width(bb) * (bb$minor_cn == 0) * bb$clonal_frequency, na.rm=TRUE) / sum(width(bb) * bb$clonal_frequency, na.rm=TRUE)
}
.classWgd <- function(ploidy, hom) 2.9 -2*hom <= ploidy
classWgd <- function(bb) .classWgd(averagePloidy(bb), averageHom(bb))
plotBB <- function(bb, ylim=c(0,max(max(bb$total_cn, na.rm=TRUE))), col=RColorBrewer::brewer.pal(4,"Set2"), type=c("lines","bars"), legend=TRUE, lty.grid=1, col.grid="grey", xaxt=TRUE, xlim=c(min(chrOffset[as.character(seqnames(bb))]+start(bb)),max(chrOffset[as.character(seqnames(bb))]+end(bb)))){
type <- match.arg(type)
s <- c(1:22, "X","Y")
l <- as.numeric(width(refLengths[seqnames(refLengths) %in% s]))
names(l) <- s
plot(NA,NA, ylab="Copy number",xlab="",xlim=xlim, ylim=ylim, xaxt="n")
c <- cumsum(l)
axis(side=1, at=c(0,c), labels=rep('', length(l)+1))
if(xaxt) mtext(side=1, at= cumsum(l) - l/2, text=names(l), line=1)
#abline(v=c, lty=3)
if(type=="lines"){
x0 <- start(bb) + cumsum(l)[as.character(seqnames(bb))] - l[as.character(seqnames(bb))]
x1 <- end(bb) + cumsum(l)[as.character(seqnames(bb))] - l[as.character(seqnames(bb))]
lwd <- 5* bb$clonal_frequency / max(bb$clonal_frequency)
segments(x0=x0, bb$major_cn ,x1, bb$major_cn, col=col[1], lwd=lwd)
segments(x0=x0, bb$minor_cn -.125,x1, bb$minor_cn-.125, col=col[2], lwd=lwd)
segments(x0=x0, bb$total_cn+.125,x1, bb$total_cn+.125, col=1, lwd=lwd)
# cv <- coverage(bb)
# cv <- cv[s[s%in%names(cv)]]
# par(xpd=NA)
# for(n in names(cv)){
# cc <- cv[[n]]
# segments(start(cc) + cumsum(l)[n] - l[n] ,-runValue(cc)/2,end(cc)+ cumsum(l)[n] - l[n], -runValue(cc)/2, col=4)
# }
}else{
ub <- unique(bb)
f <- findOverlaps(ub,bb)
m <- t(model.matrix( ~ 0 + factor(queryHits(f))))
ub$total_cn <- m %*% mg14::na.zero(bb$total_cn * bb$clonal_frequency) / max(bb$clonal_frequency)
ub$major_cn <- m %*% mg14::na.zero(bb$major_cn * bb$clonal_frequency) / max(bb$clonal_frequency)
ub$minor_cn <- m %*% mg14::na.zero(bb$minor_cn * bb$clonal_frequency) / max(bb$clonal_frequency)
ub$clonal_frequency <- max(bb$clonal_frequency)
x0 <- start(ub) + cumsum(l)[as.character(seqnames(ub))] - l[as.character(seqnames(ub))]
x1 <- end(ub) + cumsum(l)[as.character(seqnames(ub))] - l[as.character(seqnames(ub))]
rect(x0,0,x1, ub$major_cn, col=col[2], lwd=NA)
rect(x0,ub$major_cn,x1, ub$total_cn, col=col[1], lwd=NA)
abline(h = 1:floor(ylim[2]), lty=lty.grid, col=col.grid)
}
abline(v = chrOffset[1:25], lty=lty.grid, col=col.grid)
if(xaxt) mtext(side=1, line=1, at=chrOffset[1:24] + diff(chrOffset[1:25])/2, text=names(chrOffset[1:24]))
if(legend){
if(type=="lines") legend("topleft", c("Total CN","Major CN","Minor CN"), col=c("black", col[1:2]), lty=1, lwd=2, bg='white')
else legend("topleft", c("Major CN","Minor CN"), fill=col[1:2], bg='white')
}
}
plotVcf <- function(vcf, bb, clusters, col = RColorBrewer::brewer.pal(9, "Set1")[c(3,4,2,1,9)], ID = meta(header(vcf))[[1]]["ID",1], IS_WGD=classWgd(bb), NO_CLUSTER=FALSE, title=TRUE, legend=TRUE, lty.grid=1, col.grid="grey", xaxt=TRUE, pch=16, pch.out=pch, cex=0.66, xlim=c(0,chrOffset["MT"])) {
cls <- factor(paste(as.character(info(vcf)$CLS)), levels = c("clonal [early]","clonal [late]","clonal [NA]","subclonal" , "NA"))
plot(NA,NA, xlab='', ylab="VAF", ylim=c(0,1), xlim=xlim, xaxt="n", cex=cex)
if(title){
title(main=paste0(ID,", ", donor2type[sample2donor[ID]], "\nploidy=",round(averagePloidy(bb),2), ", hom=",round(averageHom(bb),2), if(IS_WGD) ", WGD" else "", if(NO_CLUSTER) ", (No clusters available)" else(paste0(", clusters=(",paste(round(clusters$proportion, 2), collapse="; "),")"))), font.main=1, line=1, cex.main=1)
}
abline(v = chrOffset[1:25], lty=lty.grid, col=col.grid)
if(xaxt) mtext(side=1, line=1, at=chrOffset[1:24] + diff(chrOffset[1:25])/2, text=names(chrOffset[1:24]))
for(i in which(!sapply(bb$timing_param, is.null))) {
s <- start(bb)[i]
e <- end(bb)[i]
x <- chrOffset[as.character(seqnames(bb)[i])]
y <- bb$timing_param[[i]][,"f"]
l <- bb$timing_param[[i]][,"pi.s"] * bb$timing_param[[i]][,"P.m.sX"]
l[is.na(l)] <- 0
if(any(is.na(c(s,e,x,y,l)))) next
segments(s+x,y,e+x,y, lwd=l*4+.1)
#text(x=(s+e)/2 +x, y=y, paste(signif(bb$timing_param[[i]][,"m"],2),signif(bb$timing_param[[i]][,"cfi"]/purityPloidy[meta(header(vv))["ID",1],"purity"],2), sep=":"), pos=3, cex=0.5)
}
points(start(vcf) + chrOffset[as.character(seqnames(vcf))], getAltCount(vcf)/getTumorDepth(vcf),col=col[cls], pch=ifelse(info(vcf)$pMutCNTail < 0.025 | info(vcf)$pMutCNTail > 0.975, pch.out , pch), cex=cex)
if(legend) legend("topleft", pch=19, col=col, legend=paste(as.numeric(table(cls)), levels(cls)), bg='white')
}
timeToBeta <- function(time){
mu <- time[,1]
#if(any(is.na(time))) return(c(NA,NA))
mu <- pmax(1e-3, pmin(1 - 1e-3, mu))
v <- (0.5 * (pmax(mu,time[,3])-pmin(mu,time[,2])))^2
alpha <- mu * (mu * (1-mu) / v - 1)
beta <- (1-mu) * (mu * (1-mu) / v - 1)
return(cbind(alpha, beta))
}
plotTiming <- function(bb, time=mcols(bb), col=paste0(RColorBrewer::brewer.pal(5,"Set2")[c(3:5)],"88"), legend=TRUE, col.grid='grey', lty.grid=1, xlim=c(0,chrOffset["MT"]), plot=2){
plot(NA,NA, xlab='', ylab="Time [mutations]", ylim=c(0,1), xlim=xlim, xaxt="n")
if(any(!is.na(bb$time)))
tryCatch({
bb <- bb[!is.na(bb$time)]
s <- start(bb)
e <- end(bb)
x <- chrOffset[as.character(seqnames(bb))]
y <- time[,"time"]
rect(s+x,time[,"time.lo"],e+x,time[,"time.up"], border=NA, col=col[time[,"type"]], angle = ifelse(bb$time.star=="*" | is.na(bb$time.star),45,135), density=ifelse(bb$time.star == "***", -1, 72))
segments(s+x,y,e+x,y)
if("time.2nd" %in% colnames(time)){
w <- !is.na(time[,"time.2nd"])
if(sum(w) != 0 & plot==2){
s <- start(bb)[w]
e <- end(bb)[w]
x <- chrOffset[as.character(seqnames(bb))][w]
y <- time[w,"time.2nd"]
rect(s+x,time[w,"time.2nd.lo"],e+x,time[w,"time.2nd.up"], border=NA, col=sub("88$","44",col)[as.numeric(time[w,"type"])], angle = ifelse(bb$time.star[w]=="*" | is.na(bb$time.star[w]),45,135), density=ifelse(bb$time.star[w] == "***", -1, 72))
segments(s+x,y,e+x,y)
}
}
}, error=function(x) warning(x))
abline(v = chrOffset[1:25], lty=lty.grid, col=col.grid)
s <- c(1:22, "X","Y")
l <- as.numeric(width(refLengths[seqnames(refLengths) %in% s]))
names(l) <- s
c <- cumsum(l)
axis(side=1, at=c(0,c), labels=rep('', length(l)+1))
mtext(side=1, line=1, at=chrOffset[1:24] + diff(chrOffset[1:25])/2, text=names(chrOffset[1:24]))
if(legend) legend("topleft", levels(time[,"type"]), fill=col, bg="white")
}
source("../modules/MutationTime.R/MutationTime.R")
findMainCluster <- function(bb, min.dist=0.05){
w <- which(bb$n.snv_mnv > 20 & !is.na(bb$time))
# d <- dist(bb$time[w])
# ci <- weighted.mean((bb$time.up - bb$time.lo)[w], width(bb)[w])
# h <- hclust(d, method='average', members=bb$n.snv_mnv[w])
# c <- cutree(h, h=ci)
# ww <- c==which.max(table(c))
# weighted.mean(bb$time[w][ww], 1/((bb$time.up - bb$time.lo + min.dist)[w][ww]), na.rm=TRUE)
s <- seq(0,1,0.01)
l2 <- pmin(bb$time.lo, bb$time - min.dist)[w]
u2 <- pmax(bb$time.up, bb$time + min.dist)[w]
l1 <- (l2 + bb$time[w])/2
u1 <- (u2+ bb$time[w])/2
wd <- as.numeric(width(bb)[w])
o <- sapply(s, function(i) sum(wd * ( (l2 <= i & u2 >=i) + (l1 <= i & u1 >= i))))
s[which.max(o)]
}
fractionGenomeWgdCompatible <- function(bb, min.dist=0.05){
m <- findMainCluster(bb)
l <- pmin(bb$time.lo, bb$time - min.dist)
u <- pmax(bb$time.up, bb$time + min.dist)
w <- which(l <= m & u >= m)
avgCi <- weighted.mean(bb$time.up- bb$time.lo, width(bb), na.rm=TRUE)
sd.wgd <- sqrt(weighted.mean((bb$time[w] - m)^2, width(bb)[w], na.rm=TRUE))
sd.all <- sqrt(weighted.mean((bb$time - m)^2, width(bb), na.rm=TRUE))
c(nt.wgd=sum(as.numeric(width(bb))[w]), nt.total=sum(as.numeric(width(bb))[!is.na(bb$time)]), time.wgd=m, n.wgd=length(w), n.all = sum(!is.na(bb$time)), chr.wgd = length(unique(seqnames(bb)[w])), chr.all = length(unique(seqnames(bb)[!is.na(bb$time)])), sd.wgd=sd.wgd, avg.ci=avgCi, sd.all=sd.all)
}
flattenBB <- function(bb){
u <- unique(bb)
d <- duplicated(bb)
mcols(u) <- mcols(u)[1:7]
u$total_cn_2 <- u$major_cn_2 <- u$minor_cn_2 <- as.integer(NA)
u$clonal_frequency_2 <- as.numeric(0)
if(any(d)){
s <- bb[d]
f <- findOverlaps(s, u, select='first')
mcols(u)[f, c("total_cn_2","major_cn_2","minor_cn_2","clonal_frequency_2")] <- mcols(s)[, c("total_cn","major_cn","minor_cn","clonal_frequency")]
}
u
}
reduceBB <- function(bb){
b <- split(bb, do.call("paste", mcols(bb)[c("clonal_frequency","major_cn","minor_cn")]))
r <- reduce(b)
s <- sort(unlist(r))
d <- DataFrame(t(sapply(strsplit(names(s), " "), as.numeric)))
names(d) <- c("clonal_frequency","major_cn","minor_cn")#names(mcols(bb))
mcols(s) <- d
names(s) <- NULL
u <- unique(bb)
f <- findOverlaps(s, u)
t <- table(subjectHits(f), queryHits(f))
s$n.snv_mnv <- u$n.snv_mnv %*% as.matrix(t)
s$total_cn <- s$major_cn + s$minor_cn
s$timing_param <- vector(mode="list", length=length(s))
s$timing_param[subjectHits(f)] <- u$timing_param[queryHits(f)]
return(s)
}
stackTime <- function(bb, time="time", t=seq(0,1,0.01)){
u <- unique(bb)
cols <- paste0(time,c("",".up",".lo"))
w <- as.numeric(width(u))
u <- mcols(u)
f <- function(x) pmin(pmax(x,0.01),0.99)
ut <- f((0.5*5+u[,cols[1]] * u$n.snv_mnv)/(5+u$n.snv_mnv))
uu <- f(u[,cols[2]])
ul <- f(u[,cols[3]])
diff(car::logit(f(t))) * rowSums(sapply(which(!is.na(ut)), function(i) w[i]*dnorm(car::logit(t[-1] - diff(t)/2), mean=car::logit(ut[i]), sd= (car::logit(uu[i]) - car::logit(ul[i]) + 0.05)/4)))#(t <= u$time.up[i] & t >= u$time.lo[i])))
#rowSums(sapply(which(!is.na(ut)), function(i) w[i]*(t <= u$time.up[i] & t >= u$time.lo[i])))
}
betaFromCi <- function(x, weight.mode=5){
if(any(is.na(x))) return(rep(NA,2))
f <- function(par,x) {
beta <- exp(par)
sum((qbeta(c(0.025,0.975), beta[1], beta[2])-x[-1])^2)+weight.mode*((beta[1]-1)/(beta[1]+beta[2]-2)-x[1])^2
}
tryCatch(exp(optim(c(0.1,0.1), fn=f,x=x)$par), error=c(1,1))
}
histBeta <- function(bb, time="time",n.min=10, s=seq(0.005,0.995,0.01)){
s <- pmax(0.001,pmin(0.999, s))
cols <- paste0(time,c("",".lo",".up"))
w <- which(bb$n.snv_mnv > n.min & !is.na(mcols(bb)[cols[1]]) & !duplicated(bb))
if(length(w)==0) return(rep(NA, length(s)))
d <- apply(as.matrix(mcols(bb)[w,c(cols, "n.snv_mnv")]), 1, function(x){
beta <- betaFromCi(x[1:3])
beta <- (beta * x[4] + 5*c(1,1))/(x[4]+5) # "posterior" with prior B(1,1)
dbeta(s,beta[1],beta[2])
})
wd <- as.numeric(width(bb)[w])
o <- d %*% wd
}
plotSample <- function(w, vcf = finalSnv[[w]], bb = finalBB[[w]], sv=finalSv[[w]], title=w, regions=refLengths[1:24], ylim.bb=c(0,5), layout.height=c(4,1.2,3.5), y1=ylim.bb[2]-1) {
p <- par()
layout(matrix(1:3, ncol=1), height=layout.height)
par(mar=c(0.5,3,0.5,0.5), mgp=c(2,0.25,0), bty="L", las=2, tcl=-0.25, cex=1)
xlim=c(min(chrOffset[as.character(seqnames(regions))]+start(regions)),max(chrOffset[as.character(seqnames(regions))]+end(regions)))
bbb <- bb[bb %over% regions]
plotVcf(vcf[vcf %over% regions], bbb, finalClusters[[w]], title=FALSE, legend=FALSE, col.grid='white', xaxt=FALSE, cex=0.33, xlim=xlim)
mtext(line=-1, side=3, title, las=1)
plotBB(bbb, ylim=ylim.bb, legend=FALSE, type='bar', col.grid='white', col=c("lightgrey", "darkgrey"), xaxt=FALSE, xlim=xlim)
tryCatch({
par(xpd=NA)
plotSv(sv, y1=y1, regions=regions, add=TRUE)
par(xpd=FALSE)
}, error=function(x) warning(x))
par(mar=c(3,3,0.5,0.5))
plotTiming(bbb, xlim=xlim, legend=FALSE, col.grid=NA)
if(length(regions) == 1)
axis(side=1, at=pretty(c(start(regions), end(regions)))+chrOffset[as.character(seqnames(regions))], labels=sitools::f2si(pretty(c(start(regions), end(regions)))))
if(any(!is.na(bb$time))){
y0 <- seq(0.005,0.995,0.01)
s <- histBeta(bb)
g <- colorRampPalette(RColorBrewer::brewer.pal(4,"Set1")[c(3,2,4)])(100)
segments(x0=chrOffset["MT"] ,y0=y0,x1=chrOffset["MT"] + s/max(s) * 1e8, col=g, lend=3)
getMode <- function(s){
if(all(is.na(s))) return(NA)
w <- which.max(s)
if(w %in% c(1, length(s))){
m <- which(c(0,diff(s))>0 & c(diff(s),0)<0)
if(length(m)==0) return(w)
m <- m[which.max(s[m])]
return(if(s[w] > 2*s[m]) w else m)
} else return(w)
}
abline(h=y0[getMode(s)], lty=5)
if("time.2nd" %in% colnames(mcols(bb))) if(any(!is.na(bb$time.2nd))){
s2 <- histBeta(bb, time="time.2nd")
segments(x0=chrOffset["MT"] + s/max(s) * 1e8 ,y0=y0,x1=chrOffset["MT"] + s/max(s) * 1e8 + s2/max(s) * 1e8, col=paste0(g,"44"), lend=3)
abline(h=y0[getMode(s2)], lty=3)
}
}
#print(w)
par(p[setdiff(names(p), c("cin","cra","csi","cxy","din","page"))])
}
plotSv <- function(sv, y0=0,y1=y0, h=1, col=paste0(RColorBrewer::brewer.pal(5,"Set1"),"44"), regions=refLengths[1:24], add=FALSE){
if(add==FALSE){
s <- c(1:22, "X","Y")
l <- as.numeric(width(refLengths[seqnames(refLengths) %in% s]))
names(l) <- s
plot(NA,NA, ylab="Copy number",xlab="",xlim=xlim, ylim=ylim, xaxt="n")
c <- cumsum(l)
axis(side=1, at=c(0,c), labels=rep('', length(l)+1))
if(length(regions) == 1)
axis(side=1, at=pretty(c(start(regions), end(regions)))+chrOffset[as.character(seqnames(regions))], labels=sitools::f2si(pretty(c(start(regions), end(regions)))))
if(xaxt) mtext(side=1, at= cumsum(l) - l/2, text=names(l), line=1)
}
#r <- rowRanges(sv)
#a <- unlist(alt(sv))
vs <- GRanges(info(sv)$MATECHROM, IRanges(info(sv)$MATEPOS, width=1))
l <- 20
x0 <- seq(0,1,l=l)
y2 <- x0*(1-x0)*4*h
cls <- factor(as.character(info(sv)$SVCLASS), levels=c("DEL", "DUP", "h2hINV","t2tINV","TRA"))
w <- which(sv %over% regions | vs %over% regions)
for(i in w)
try({
x <- seq(start(sv)[i] + chrOffset[as.character(seqnames(sv)[i])], start(vs)[i] + chrOffset[as.character(seqnames(vs)[i])], length.out=l)
x <- c(x[1], x, x[length(x)])
y <- y1 + y2 * if(grepl("INV", cls[i])) -1 else 1
y <- c(y0, y , y0)
lines(x, y, col=col[cls[i]])
#segments(x0=c(x[1], x[l]), x1=c(x[1],x[l]), y0=y0, y1=y1, col=col[cls[i]])
})
}
t <- read.table("../ref/release_may2016.v1.1.TiN__donor.TiNsorted.20Jul2016.tsv", header=TRUE, sep="\t")
TiN <- t$TiN_donor
names(TiN) <- t$icgc_donor_id
w <- read.table("../final/structure_weme_released_consensus_merged.txt", header=TRUE)
wemeClustersMerged <- split(w[,1:4], w$sample)
# TODO: Add comment
#
# Author: mg14
###############################################################################
set.seed(42)
args <- commandArgs(trailingOnly = TRUE)
source("PCAWG-functions.R")
vcfFileIn <- args[1]
vcfFileOut <- args[2]
print(vcfFileIn)
print(vcfFileOut)
library(VariantAnnotation)
library(Matrix)
s <- strsplit(vcfFileIn,"/")[[1]]
ID <- sub("\\..+", "", s[length(s)])
print(ID)
#' ## CLUSTERS
# Load clusters
clusters <- consensusClustersToOld(loadConsensusClusters((ID))) # consensus clusters
clusters$proportion <- wccClusters[[ID]]$proportion # WCC adjusted CP
clusters$n_ssms <- wemeClustersMerged[[ID]]$n_ssms # WEME prevalence to fix consensus bug
purity <- purityPloidy[ID,'purity']
#' ## COPYNUMBER
bb <- loadConsensusCNA(ID, purity=purityPloidy[ID, 'purity'])
IS_WGD <- classWgd(bb)
#' ## VCF
#' Load vcf
vcf <- readVcf(vcfFileIn, genome="GRCh37") #, param=ScanVcfParam(which=pos))
# Add ID & gender
meta(header(vcf))$META <- rbind(meta(header(vcf))$META, DataFrame(Value=c(ID, as.character(allGender[ID, "pred_gender"])), row.names=c("ID", "gender")))
# Add driver genes
vcf <- addFinalDriver(vcf, finalDrivers)
# Add TNC
if(!"TNC" %in% rownames(info(header(vcf)))){
tnc=scanFa(file=refFile, resize(granges(vcf), 3,fix="center"))
i = info(header(vcf))
info(header(vcf)) <- rbind(i, DataFrame(Number=1,Type="String",Description="Trinucleotide context", row.names="TNC"))
info(vcf)$TNC <- as.character(tnc)
}
#' Add mutation copy numbers
# vcf <- addMutCn(vcf, bb, clusters)
i = info(header(vcf))
info(header(vcf)) <- rbind(i,mcnHeader())
L <- computeMutCn(vcf, bb, clusters=clusters, purity=purity, xmin=3, gender=as.character(allGender[ID, "pred_gender"]), isWgd=IS_WGD, n.boot=500)
info(vcf) <- cbind(info(vcf), L$D)
bb$timing_param <- L$P
#' Classify mutations
cls <- classifyMutations(vcf, reclassify='all')
info(vcf)$CLS <- cls
info(header(vcf)) <- rbind(info(header(vcf)), DataFrame(Number="1",Type="String",Description="Mutation classification: {clonal [early/late/NA], subclonal}", row.names="CLS"))
#' Timing
bb$n.snv_mnv <- countOverlaps(bb, vcf)
t <- bbToTime(bb)
mcols(bb) <- DataFrame(mcols(bb), t)
#' Drivers
info(vcf)$DG <- matchDrivers(vcf, finalDrivers)
#' Save output
writeVcf(vcf, file=vcfFileOut)
bgzip(vcfFileOut, overwrite=TRUE)
unlink(vcfFileOut)
save(vcf, file=paste0(vcfFileOut,".RData"))
#' ## INDEL
vcfIndelFileIn <- sub("20160830","20161006",gsub("snv_mnv","indel", vcfFileIn))
vcfIndelFileOut <- sub("20160830","20161006",gsub("snv_mnv","indel", vcfFileOut))
#' Load vcf
vcfIndel <- readVcf(vcfIndelFileIn, genome="GRCh37") #, param=ScanVcfParam(which=pos))
#' Add ID & gender
meta(header(vcfIndel))$META <- rbind(meta(header(vcfIndel))$META, DataFrame(Value=c(ID, as.character(allGender[ID, "pred_gender"])), row.names=c("ID", "gender")))
#' Add driver genes
vcfIndel <- addFinalDriver(vcfIndel, finalDrivers)
#' Add mutation copy numbers
i = info(header(vcfIndel))
info(header(vcfIndel)) <- rbind(i,mcnHeader())
L <- computeMutCn(vcfIndel, bb, clusters=clusters, purity=purity, xmin=3, gender=as.character(allGender[ID, "pred_gender"]), isWgd=IS_WGD)
info(vcfIndel) <- cbind(info(vcfIndel), L$D)
#' Classify mutation
clsIndel <- classifyMutations(vcfIndel, reclassify='all')
info(vcfIndel)$CLS <- clsIndel
info(header(vcfIndel)) <- rbind(info(header(vcfIndel)), DataFrame(Number="1",Type="String",Description="Mutation classification: {clonal [early/late/NA], subclonal}", row.names="CLS"))
#'Drivers
info(vcfIndel)$DG <- matchDrivers(vcfIndel, finalDrivers)
#' Save
writeVcf(vcfIndel, file=vcfIndelFileOut)
bgzip(vcfIndelFileOut, overwrite=TRUE)
unlink(vcfIndelFileOut)
save(vcfIndel, file=paste0(vcfIndelFileOut,".RData"))
#' Save BB
bb$n.indel <- countOverlaps(bb, vcfIndel)
seqlevels(bb) <- c(1:22, "X","Y")
bb <- sort(bb)
save(bb, file=sub("snv_mnv","cn",sub(".vcf$",".bb_granges.RData",vcfFileOut)))
#' Save clusters & purity
save(clusters, purity, file=sub("snv_mnv","clusters",sub(".vcf$",".clusters_purity.RData",vcfFileOut)))
#' ## PLOT
pdf(file=sub("snv_mnv","other",sub(".vcf$",".pdf",vcfFileOut)), 12,18)
par(mar=c(1,3,3,1), bty="L", mgp=c(2,.5,0), mfrow=c(4,1),cex=1, las=2)
j <- 1
for(v in c('vcf','vcfIndel')){
vv <- get(v)
col <- RColorBrewer::brewer.pal(9, "Set1")[c(3,4,2,1,9)]
plotVcf(vcf = vv, bb = bb, clusters = clusters, col = col, ID = ID, IS_WGD = IS_WGD, NO_CLUSTER = FALSE, title=j==1)
j <- j+1
}
plotBB(bb, ylim=c(0,10))
try(plotTiming(bb))
dev.off()
#plot(start(vcf) + w[as.character(seqnames(vcf))], qnorm(info(vcf)$pMutCNTail), col=col[cls], xlab='Position', ylab="pTail", pch=16)